我正在尝试使用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个小时在互联网上搜索类似的内容,并且有大量类似的问题,但是我根本无法理解任何答案。有人可以告诉我该代码结构是什么吗?
答案 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
}
}