我必须做一个学生平均计划,但我无法输出输出。如果将.println行移到while循环之外,则会出现“找不到符号”错误。
我认为可能不是在打印,因为我已经读过一次该文件,并且我正尝试再次读取它以找出平均值。我该如何工作?
我文件的内容:
Agnes 56 82 95 100 68 52
Bufford 87 92 97 100 96 85 93 77 98 86
朱莉(Julie)991001008996100929968
爱丽丝40 36 85 16 0 22 72
鲍比100 98 92 92 86 88
import java.util.*;
import java.io.*;
public class EZD_studentAvgs
{
public static void main(String args[]) throws IOException
{
Scanner sf = new Scanner(new File("EZD_gradebook.txt"));
int max = -1;
String fr[] = new String[100];
System.out.println("The input file:\n");
while(sf.hasNext())
{
max++;
fr[max] = sf.nextLine();
System.out.println(fr[max]);
}
//System.out.println("max: " + max);
System.out.println("");
System.out.println("\nThe output:\n");
while(sf.hasNextLine())
{
Scanner ga = new Scanner(sf.nextLine());
String student = ga.next();
double sum = 0;
int count = 0;
while(ga.hasNextInt())
{
sum = sum + sf.nextInt();
count++;
}
System.out.println(student + ", average: " + (sum/count));
}
sf.close();
}
}
答案 0 :(得分:1)
您将行读入fr
,直到sf.hasNext()
返回false。您永远不会重置sf
,因此逻辑上认为,当您到达sf.hasNextLine()
时,它也是错误的。
与其重新读取行,不如对已读入的字符串进行扫描;换句话说,看起来您可以在fr
中的字符串中从0循环到max
,代替当前基于sf.hasNextLine()
的循环。