有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在用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。将返回NoTouchElementException

通过使用调试器,我可以看到紧跟在代码“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) 个答案