如何拆分具有字符串和双精度的输入文本文件?

Posted

技术标签:

【中文标题】如何拆分具有字符串和双精度的输入文本文件?【英文标题】:How to split input text file that has string and doubles? 【发布时间】:2019-10-01 02:52:06 【问题描述】:

我要从 .txt 输入中读取数据并按行排序到数组中(读取:名字、姓氏、等级 1、等级 2、等级 3),但我遇到了问题。我假设我必须为每个人创建数组,但我无法通过对每个行条目进行排序。我了解如何使用拆分的基础知识,但我假设我将不得不使用嵌套的 for 循环将字符串与双精度数分开,并将每个字符串放在自己的数组中。我不确定如何编译它。

【问题讨论】:

向我们展示您迄今为止所做的尝试。 【参考方案1】:

您可以使用 FileReader 逐行读取。然后,您可以在逗号上拆分结果字符串,并使用 Double.valueOf 来获取您的值。以下示例很简单,但假定文件格式正确:

public class Test 

    static class Student 
        private String firstName;
        private String lastName;
        private double math;
        private double english;
        private double computerScience;

        public Student(String firstName, String lastName, double math,
                double english, double computerScience) 
            this.firstName = firstName;
            this.lastName = lastName;
            this.math = math;
            this.english = english;
            this.computerScience = computerScience;
        

        @Override
        public String toString() 
            return "Name: " + firstName + " " + lastName + ", Math: " + math +
            ", English: " + english + ", Computer Science: " + computerScience;
        
    

    public static void main(String[] args) 
        BufferedReader reader;
        try 
            reader = new BufferedReader(new FileReader("/home/username/grades.txt"));
            String line = reader.readLine();
            while (line != null) 
                String[] gradeArray = line.split(",");
                Student myStudent = new Student(gradeArray[0], gradeArray[1],
                        Double.valueOf(gradeArray[2]), Double.valueOf(gradeArray[3]),
                        Double.valueOf(gradeArray[4]));

                System.out.println(myStudent.toString());
                line = reader.readLine();
            
        
        catch (NumberFormatException|IndexOutOfBoundsException badFile) 
            System.out.println("You have a malformed gradebook");
            badFile.printStackTrace();
        
        catch (IOException e) 
            e.printStackTrace();
        
    


【讨论】:

以上是关于如何拆分具有字符串和双精度的输入文本文件?的主要内容,如果未能解决你的问题,请参考以下文章

从最高到最低(并行数组)对字符串数组和双精度数组进行排序并对齐文本

qgis双精度怎么弄

在 spark java 中读取具有固定宽度和分隔符的文本文件

如何拆分文本文件并在一行中存储 2 个值?

如何基于多个空格字符将文本文件拆分为 2 列作为 scala spark 的分隔符

使用c#将文本文件拆分为双字