我有以下代码:
Scanner in = new Scanner(new FileReader("in.txt"));
while(in.hasNext()){
System.out.println(in.nextLine());
System.out.println(in.nextLine());
System.out.println(in.nextDouble());
System.out.println(in.nextDouble());
System.out.println(in.nextDouble());
System.out.println(in.nextLine());
}
其中 in.txt 的格式为:
One Name
Second Name
double
double
double
One Name
Second Name
double
double
double
...
但是,while 循环在输入文件的最后一行失败。它打印整个输入文件,但是完成后我收到一条错误消息:
Exception in thread "main" java.util.NoSuchElementException: No line found
at java.util.Scanner.nextLine(Scanner.java:1585)
at start.Start.main(Start.java:22)
Java Result: 1
最佳答案
每次读取之前都必须调用hasNext()
方法,因为如果为true,该方法可以保证至少还有一个元素要读取。您的阅读内容应如下所示:
if (in.hasNext())
System.out.println(in.nextLine());
if (in.hasNext())
System.out.println(in.nextLine());
if (in.hasNext())
System.out.println(in.nextDouble());
if (in.hasNext())
System.out.println(in.nextDouble());
if (in.hasNext())
System.out.println(in.nextDouble());
if (in.hasNext())
System.out.println(in.nextLine());
关于java - 扫描仪在输入文件的末尾处失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22122983/