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