while((line = b.readLine())!= null)不会终止?

时间:2017-12-19 13:54:56

标签: java java.util.scanner bufferedreader readline reader

我用Java编写一些代码来扫描.txt文件。文件中的每一行包含两个标记,并且只有大约7行数据。

我的目标是使用while循环扫描每一行,将标记存储在HashMap中,当扫描程序到达文档的末尾时,我希望while循环终止。以下是我正在使用的代码片段:

while ((line = b.readLine()) != null) {
        s = new Scanner(line);
        String fileName = s.next();
        String source = s.next();
        sourceMap.put(fileName, source);
    }

这是我以前做过很多次的事情,但是现在有一些问题与while循环终止。 while循环即使在最后一个'之后仍然继续运行。线已被阅读。当扫描程序尝试读取标记时,将返回java.util.NoSuchElementException。

从使用调试器我可以看到紧跟在' final'之后的那一行。代码行读作:""

我相信这是一个空字符串,但我不确定这是否与null行不同。我试图为条件while (line != "")添加代码,但是这不会导致while循环终止。

之前有没有人遇到类似的问题,如果有的话,你是如何克服它们的?

编辑:现在已经解决了。在' final'之后有一行空字符串。 .txt文件中的行。更正后的代码如下:

while ((line != null) && (!line.isEmpty())) {
        s = new Scanner(line);
        String fileName = s.next();
        String source = s.next();
        sourceMap.put(fileName, source);
        line = b.readLine();
    }

0 个答案:

没有答案