猿问

Java - 将数据从txt文件传输到数组中

我目前正在尝试开发一个程序,该程序使用学生 ID 和 GPA(取自 txt 文件),并使用它们来做许多其他事情,例如根据 GPA 范围将学生分为 8 个类别之一,制作学生的直方图并按 GPA 对学生进行排名。然而,我需要做的第一件事是将学生 ID 和 GPA 转移到两个单独的数组中。


我知道创建数组的语法如下:


elementType[] arrayRefVar = new elementType[arraySize]

但是,我仍然不知道如何将从文件读取的数据传递到两个单独的数组中。我必须从txt文件中读取数据的代码如下:


public static void main(String[] args) throws Exception  // files requires exception handling

{

    String snum;     

    double gpa;

    Scanner gpadata = new Scanner(new File("studentdata.txt"));


    while (gpadata.hasNext()) // loop until you reach the end of the file 

    {

        snum = gpadata.next(); // reads the student's id number

        gpa = gpadata.nextDouble(); // read the student's gpa


        System.out.println(snum + "\t" + gpa); // display the line from the file in the Output window


    }

}

所以我的问题是:如何将此信息传递到两个单独的数组中?如果我的问题很难理解,我很抱歉,我对编程非常陌生。我已经被这个程序困扰很长时间了,任何帮助将非常感激!谢谢。


潇湘沐
浏览 115回答 1
1回答

大话西游666

您可以在 while 循环之前创建两个数组,然后将循环内的每个元素添加到每个数组中。但这种方法有一个问题:我们不知道值的数量,因此我们无法为此创建固定大小的数组。我建议改为使用ArrayList,它可以根据需要增长。像这样的东西:public static void main(String[] args) throws FileNotFoundException {&nbsp; &nbsp; Scanner gpadata = new Scanner(new File("studentdata.txt"));&nbsp; &nbsp; List<String> IDs = new ArrayList<>();&nbsp; &nbsp; List<Double> GPAs = new ArrayList<>();&nbsp; &nbsp; while (gpadata.hasNext()) // loop until you reach the end of the file&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; String snum = gpadata.next(); // reads the student's id number&nbsp; &nbsp; &nbsp; &nbsp; double gpa = gpadata.nextDouble(); // read the student's gpa&nbsp; &nbsp; &nbsp; &nbsp; IDs.add(snum);&nbsp; &nbsp; &nbsp; &nbsp; GPAs.add(gpa);&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(snum + "\t" + gpa); // display the line from the file in the Output window&nbsp; &nbsp; }&nbsp; &nbsp; // Use IDs and GPAs Lists for other calculations}更好的方法是使用MapGPA 与学生 ID“配对”。编辑:在您澄清最大记录数永远不会超过 1000 后,我修改了我的解决方案以使用数组而不是列表。我没有更改变量名称,因此您可以轻松比较解决方案。public static void main(String[] args) throws FileNotFoundException {&nbsp; &nbsp; Scanner gpadata = new Scanner(new File("studentdata.txt"));&nbsp; &nbsp; String[] IDs = new String[1000];&nbsp; &nbsp; double[] GPAs = new double[1000];&nbsp; &nbsp; int counter = 0;&nbsp; &nbsp; while (gpadata.hasNext()) // loop until you reach the end of the file&nbsp; &nbsp; {&nbsp; &nbsp; &nbsp; &nbsp; String snum = gpadata.next(); // reads the student's id number&nbsp; &nbsp; &nbsp; &nbsp; double gpa = gpadata.nextDouble(); // read the student's gpa&nbsp; &nbsp; &nbsp; &nbsp; IDs[counter] = snum;&nbsp; &nbsp; &nbsp; &nbsp; GPAs[counter] = gpa;&nbsp; &nbsp; &nbsp; &nbsp; System.out.println(snum + "\t" + gpa); // display the line from the file in the Output window&nbsp; &nbsp; &nbsp; &nbsp; counter++;&nbsp; &nbsp; }&nbsp; &nbsp; // Use IDs and GPAs Lists for other calculations}请注意,我们需要一个counter(又名索引)变量来寻址数组槽。
随时随地看视频慕课网APP

相关分类

Java
我要回答