【问题标题】:Converting a text file to an array in Java在 Java 中将文本文件转换为数组
【发布时间】:2015-02-04 03:57:19
【问题描述】:

我是 Java 的初学者,我有一个包含 25 名学生的列表,其中包括他们的姓名、年龄、收入和智商在一个文本文件中。我正在努力解决如何获取这个文本文件并将其放入一个数组中,以便我可以对它们进行排序等等。到目前为止,我有:

File myFile = new File ("./src/Project2/StudentList");
Scanner myScan = new Scanner(myFile);

while (myScan.hasNext()) {

    String line = myScan.nextLine();
    Scanner scanner = new Scanner(line);
    scanner.useDelimiter(",");

    while (scanner.hasNext()) {
        String name = scanner.next();
        String age = scanner.next();
        String income = scanner.next();
        String smart = scanner.next();

        Student students = new Student(name, age, income, smart);


        System.out.println(students);
    }
}

我只想知道解决这个问题的最简单方法。我很近,我能感觉到!提前致谢。

【问题讨论】:

    标签: java arrays file text java.util.scanner


    【解决方案1】:

    定义你的数组:

    Student[] students = new Student[25];
    int i = 0;
    

    然后在你的循环中

    Student student = new Student(name, age, income, smart);
    students[i++] = student;
    

    或动态数组

    List<Student> students = new ArrayList()<>;
    

    在循环中:

    Student student = new Student(name, age, income, smart);
    students.add(student);
    

    【讨论】:

      【解决方案2】:

      因此,如果正确解析了文本文件,并且正确实现了 Student 类,我认为最好的方法是将学生插入到执行打印语句的学生数组中。

      你可以在循环之前做这个:

      Student[] studentArray = new Student[25];
      int count = 0;
      

      打印语句发生在哪里

      studentArray[count] = student;
      count++;
      

      另外,为了清楚起见,我会将循环内的学生变量重命名为单数,因为它一次只代表一个学生。也许 currentStudent 实际上会更合适。

      【讨论】:

      • 啊!谢谢!我还有一个问题。我想使用 selectionSort 或 insertSort 根据他们的 IQ (0-50) 对 25 名学生进行排序。我该怎么办?
      • @StarLordCoderGuy11 你应该用谷歌搜索这两种排序算法并弄清楚如何自己做,因为到目前为止自己做是最好的方法
      • 就像@nem 所说,实现自己的排序将是一种非常好的学习方式。有一个用 Arrays.java 实现的排序,但是我假设它是快速排序或合并排序。我认为你还需要为你的学生类建立一个比较器。解决方法是让 Student 类实现 Comparable,然后实现 compareTo 方法。 h ttps://docs.oracle.com/javase/7/docs/api/java/lang/Comparable.html
      • 顺便说一句,如果您编写自己的排序函数,我认为实现可比较也将起作用。我相信实现它可以让您在自定义排序中正确比较它们。
      【解决方案3】:

      在循环外初始化您的数组:Student[] students = new Student[25]; 然后,维护一个计数器,以在您循环文件时跟踪您所在的学生。对于每个学生,students[i] = new Student(name, age, income, smart);

      【讨论】:

        猜你喜欢
        • 2015-05-28
        • 2022-01-22
        • 2012-03-17
        • 2015-11-28
        • 1970-01-01
        • 2021-03-13
        • 1970-01-01
        • 2016-05-07
        相关资源
        最近更新 更多