这是我第一次使用StackOverflow。我正在尝试读取一个文本文件,该文件由第一行的第一个数字组成。
try {
Scanner s = new Scanner(new File("HighScores.txt"));
int temp =Integer.parseInt(s.nextLine());
s.close();
return temp;
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
然而,我收到错误:
java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Unknown Source)
at GameStart.getHighScore(GameStart.java:334)
at GameStart.init(GameStart.java:82)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
我知道HighScores.txt不是空的,为什么会出现这个问题?我尝试使用BufferedReader,而BufferReader.readLine()返回null。
答案 0 :(得分:0)
您应该按照以下方式更正您的代码
Scanner s = new Scanner(new File("HighScores.txt"));
int temp=0;
while(s.hasNextLine){
temp =Integer.parseInt(s.nextLine());
}
如果没有下一行,则s.nextLine()
将不会执行。在这种情况下,输入文件中似乎没有行(空文件)。
答案 1 :(得分:0)
Scanner吞下错误。使用ioException方法检查它们。
Scanner s = new Scanner(new File("HighScores.txt"));
if(!s.hasNextLine()) {
System.out.println(s.ioException());
}
答案 2 :(得分:-1)
我正在尝试读取一个文本文件,该文件由第一行的第一个数字组成。
我想知道您的文件是否以行分隔符结尾?
来自Javadoc:
由于此方法继续搜索输入以查找行分隔符,因此如果没有行分隔符,它可以缓冲搜索要跳过的行的所有输入。
因此,如果文件中只包含该编号,则扫描程序可能会因缺少换行符(或类似字符)而感到困惑。
修改强> 我可能使用了错误的Javadoc摘录来支持这篇论文。 Javadoc还说:
该位置设置为下一行的开头。
如果没有下一行怎么办?也许这正是扫描仪试图告诉你的。