java - 读取文本文件中的下一行

标签 java loops text input

我正在尝试从格式如下的文本文件中读取输入:

2 80 97 
5 69 79 89 99 58 
7 60 70 80 90 100 0 59

每行的第一个数字是每个“部分”的“等级”数。

我让我的程序读取一个部分,但我不知道如何让它读取有多少个部分,然后读取下一行。

我想我可以将当​​前的代码放入计数控制循环中,该循环将首先读取有多少部分,然后运行循环多次。我只是不知道如何将这个想法转换为代码。

以下是相关代码部分:

public static void main(String args[]) throws Exception 
{
  Scanner in = new Scanner(new File("prog2test.txt")); 

  //int sections = (in.nextInt());
  int scores = (in.nextInt());
  int scoresForAverage = scores;
  int scoreTotals = 0;
  double average = 0;
  int A = 0;
  int B = 0;
  int C = 0;
  int D = 0;
  int F = 0;

  int highest = 0;
  int lowest = 100;
  while (scores > 0 && in.hasNextInt())
  {
     int grade = in.nextInt();
     if (grade >= 90)
        A++;
     else if (grade >= 80)
        B++;
     else if (grade >= 70)
        C++;
     else if (grade >= 60)
        D++;
     else
        F++;

     if (grade > highest) 
        highest = grade;
     if (grade < lowest)
        lowest = grade;

     scores--;
     scoreTotals = (scoreTotals + grade);
   }  

  average = scoreTotals/scoresForAverage;

  System.out.println("Scores for section 1");
  System.out.println("A's: " + A);
  System.out.println("B's: " + B);
  System.out.println("C's: " + C);
  System.out.println("D's: " + D);
  System.out.println("F's: " + F);
  System.out.println("Lowest score: " + lowest);
  System.out.println("Highest score: " + highest);
  System.out.println("Average: " + average);

编辑:更新了完整的方法。

最佳答案

由于您知道每行中的第一个整数不是成绩,因此您可以使用 someString = in.nextLine() while in.hasNextLine() 保存每行,并且然后对每行使用新的 Scanner 实例迭代每个保存的字符串,跳过第一个整数。

关于java - 读取文本文件中的下一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19595368/

相关文章:

java - 启动时 Play Framework 错误

java - 虽然循环没有爆发

c - 如何有效地迭代以 2 为基数的 vector

powershell - 用于批量查找和替换特定文本的脚本,然后在 .txt 文件中的替换文本后添加 3 个空格

file - 文本文件和二进制文件有什么区别。您如何决定何时使用什么?

java - 如何在android中使用JSONObject解析转义的Json

java - 如何使用jpa项目eclipse在实体类中生成唯一约束

python - 有没有比迭代相同循环更好的方法来检索值?

linux - 是否有任何 UNIX/Linux 命令可以检查 2 行是否连续

java - 如何使用 Java 客户端为 SOAP 生成特定的命名空间