再次帮助大家,即使我确定文件存在,为什么在使用扫描仪时总是出现这种错误。
java.util.NoSuchElementException:找不到行
我试图通过使用a
循环计算for
的出现次数。文本文件包含句子行。同时,我想打印句子的确切格式。
Scanner scanLine = new Scanner(new FileReader("C:/input.txt"));
while (scanLine.nextLine() != null) {
String textInput = scanLine.nextLine();
char[] stringArray = textInput.toCharArray();
for (char c : stringArray) {
switch (c) {
case 'a':
default:
break;
}
}
}
最佳答案
while(scanLine.nextLine() != null) {
String textInput = scanLine.nextLine();
}
我会说问题出在这里:
在
while
条件下,您扫描最后一行并进入EOF。之后,您输入循环主体并尝试获取下一行,但是您已经读完了该文件。将循环条件更改为scanLine.hasNextLine()
或尝试另一种读取文件的方法。读取txt文件的另一种方式可以是这样的:
BufferedReader reader = new BufferedReader(new InputStreamReader(new BufferedInputStream(new FileInputStream(new File("text.txt")))));
String line = null;
while ((line = reader.readLine()) != null) {
// do something with your read line
}
reader.close();
或这个:
byte[] bytes = Files.readAllBytes(Paths.get("text.txt"));
String text = new String(bytes, StandardCharsets.UTF_8);