再次帮助大家,即使我确定文件存在,为什么在使用扫描仪时总是出现这种错误。


  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);

08-18 06:12