扫描程序读取数据文件Java.Util.NoSuchElementException:Null

时间:2016-03-09 16:08:16

标签: java java.util.scanner nosuchelementexception

我正在尝试编写一个将从文件中获取数字的类,但是当我运行时,我一直遇到此错误: Java.util.NoSuchElementException:Null(在java.util.Scanner中) 这是我的代码:

import java.util.*;
import java.io.*;
public class finalMain
{
    public static void main (String args[]) throws IOException
{
  int lineNumber = 0;
   Scanner sc = new Scanner (new File ("Prog349f.txt"));

    System.out.println("Student  Quiz 1  Quiz2    MidTerm   Final      Final %     Grade");

    while(sc.hasNextLine())
    {

        lineNumber++;
        sc.nextLine();
    }
    for(int i = 1; i <= 1; i++)
    {
       int quizOne = sc.nextInt();
       int quizTwo = sc.nextInt();
       int midterm = sc.nextInt();
       int finalTest = sc.nextInt();

       finalGrade studentNext = new finalGrade(sc.nextInt(),sc.nextInt(), sc.nextInt(),sc.nextInt(), i);
       System.out.println(studentNext);
    }
    sc.close();
}
}

我想也许我需要创建两个扫描仪对象,每行一个或者其中一个,但我不知道我会怎么做。

1 个答案:

答案 0 :(得分:2)

您误解了Scanner方法的用法:sc.nextLine();消耗并返回该行。 这意味着您当前正在使用sc.nextLine();读取整个文件,丢弃结果,然后您尝试读取4个整数,由于扫描程序位于文件末尾,因此无法读取。 / p>

您应该使用以下两种方法之一:

  • 如果你肯定你的文件的每一行都包含4个以空格(或任何其他特定字符)分隔的整数,那么你可以在扫描仪有下一行时扫描4个整数。 / p>

  • 如果可能存在变体或无用的数据,您应该按原样保留hasNextLine()nextLine()来电,然后使用正则表达式,拆分+索引或其他扫描程序来检索4从行开始。