我正在尝试编写一个将从文件中获取数字的类,但是当我运行时,我一直遇到此错误: 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();
}
}
我想也许我需要创建两个扫描仪对象,每行一个或者其中一个,但我不知道我会怎么做。
答案 0 :(得分:2)
您误解了Scanner
方法的用法:sc.nextLine();
消耗并返回该行。
这意味着您当前正在使用sc.nextLine();
读取整个文件,丢弃结果,然后您尝试读取4个整数,由于扫描程序位于文件末尾,因此无法读取。 / p>
您应该使用以下两种方法之一:
如果你肯定你的文件的每一行都包含4个以空格(或任何其他特定字符)分隔的整数,那么你可以在扫描仪有下一行时扫描4个整数。 / p>
如果可能存在变体或无用的数据,您应该按原样保留hasNextLine()
和nextLine()
来电,然后使用正则表达式,拆分+索引或其他扫描程序来检索4从行开始。