当我尝试运行它时,我的代码一直给我这个错误消息。
Exception in thread "main" java.util.NoSuchElementException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at readingFile.readFile(readingFile.java:18)
at apples.main(apples.java:6)
您认为这是什么问题?这样做时我正在观看buckys教程。它对他有用,但不适合我。
import java.io.*;
import java.util.Scanner;
public class readingFile {
private Scanner x;
public void openFile() {
try {
x = new Scanner(new File("C:\\Users\\Ike\\Desktop\\chinese.txt"));
}
catch(Exception e) {
System.out.println("could not find file");
}
}
public void readFile() {
while(x.hasNext()) {
String a = x.next();
String b = x.next();
String c = x.next();
System.out.printf("%s %s %\n", a,b,c);
}
}
public void closeFile() {
x.close();
}
}
答案 0 :(得分:1)
每次调用next()
时,您都会将扫描仪指针移动到下一个匹配的模式。因此,您需要在每次hasNext()
来电之前检查next()
。
像这样,
while(x.hasNext()) {
System.out.print(x.next());
}
System.out.println();
next()和hasNext()方法及其原始类型的伴侣 方法(如nextInt()和hasNextInt())首先跳过任何输入 匹配分隔符模式,然后尝试返回下一个 令牌。 hasNext和next方法都可能阻止等待进一步 输入。 hasNext方法块是否与or无关 不是它相关的下一个方法会阻止。[Java doc reference]