如果我在while循环中添加if语句,Java缓冲读取器将停止读取行:

0 java buffered

我正在用Java从零开始创建一个游戏引擎,我已经开始研究一个新的保存文件,而不是使用地图的imaages:

工作并打印出每一行:

while ((readString = buf.readLine()) != null) {
    System.out.println("Failed to assign action to line: " + readString);
}
Run Code Online (Sandbox Code Playgroud)

不起作用,打印出前3行:

while ((readString = buf.readLine()) != null) {
                if (readString.contains("Width:")){
                    readString.replace("Width:", "");
                    readString.trim();
                    Integer.parseInt(readString);
                    System.out.println(readString);
                }else if (readString.contains("Height:")){
                    readString.replace("Height::", "");
                    readString.trim();
                    Integer.parseInt(readString);
                    System.out.println(readString);
                }else{
                    System.out.println("Failed to assign action to line: " + readString);
                }
}
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,最上面的一个正在工作并打印出每一行到控制台,第二个在读取第三行后停止.在研究问题时我没有找到任何东西,我的语法似乎是正确的.我的代码出了什么问题?

Kin*_*ian 5

可能有一个例外,你没有看到.

把它放在你的代码周围:

try {
   //.. your while-loop here
}
catch(Exception e) {
   e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

然后修复错误.

另一个暗示:readString.replace("Width:", ""),readString.trim()Integer.parseInt(readString)不会起作用.函数本身不会更改变量,您需要将其结果分配给变量.

例:

 readString = readString.trim();
Run Code Online (Sandbox Code Playgroud)