将.txt文件中的数据存储到数组中并创建等级

时间:2018-11-02 18:34:37

标签: java arrays

我正在尝试使用txt文件中的数据填充数组。本质上,我不了解循环代码的结构。我知道索引在循环中需要像int变量一样对待,但我不知道它是什么样子。

这是我到目前为止的情况,这是非常错误的,

public class ReadTextFileUsingScanner
{

    public static void main(String[] args) throws Exception 
    {
        String[] snumArray;
        snumArray = new String[1000];

        double[] gpaArray;
        gpaArray = new double[1000];

        int rank = 0;
        double currentGPA = 4.1;



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

        while (gpadata.hasNext())
        {
            snumArray[0] = gpadata.next();
            gpaArray[0] = gpadata.nextDouble();

            if (currentGPA > gpaArray[0])
            {
                rank++;
            }

            System.out.println(snumArray[0] + "\t" + gpaArray[0] + "\t" + rank);

        }
    }


}

我只用了几个月的时间就开始进行Java编程,为此我真的遇到了麻烦。我需要输出看起来像这样:

S316542                3.45        27
S29463                  1.42        801
S969870                2.75        T64 with 8 others

我无法更改学生的顺序,因此无法使用排序来创建排名。

我真正想知道的是,如何用.txt文件中的数据填充索引?我现在的操作方式(很愚蠢,我知道)只是填充[0]索引,然后打印,然后替换[0]索引处的数据。那是不对的。我大概花了5个小时在互联网上搜索类似的内容,并且有大量类似的问题,但是我根本无法理解任何答案。有人可以告诉我该代码结构是什么吗?

1 个答案:

答案 0 :(得分:0)

您可以制作一个int line变量并在循环结束时进行迭代

然后,您要检查扫描仪中的线; .next()仅读取下一个空格。

   Scanner gpadata = new Scanner(new File("studentdata.txt"));
   int line = 0; // Add this
   while (gpadata.hasNextLine()) {
        String[] columns = gpadata.nextLine().split("\t");

        snumArray[line] = columns[0];
        gpaArray[line] = Double.parseDouble(columns[1]);

        if (currentGPA > gpaArray[line]) {
            rank++;
        }

        System.out.println(snumArray[line] + "\t" + gpaArray[line] + "\t" + rank);

        line++; // Add this
    }
}