如果我将.println行移动到其他任何地方,则输出为空+错误

时间:2018-11-26 00:49:13

标签: java file

我必须做一个学生平均计划,但我无法输出输出。如果将.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();
  }
 }

1 个答案:

答案 0 :(得分:1)

您将行读入fr,直到sf.hasNext()返回false。您永远不会重置sf,因此逻辑上认为,当您到达sf.hasNextLine()时,它也是错误的。

与其重新读取行,不如对已读入的字符串进行扫描;换句话说,看起来您可以在fr中的字符串中从0循环到max,代替当前基于sf.hasNextLine()的循环。