gpt4 book ai didi

java:使用缓冲阅读器并检查字符串是否为空

转载 作者:行者123 更新时间:2023-11-29 03:42:10 25 4
gpt4 key购买 nike

为什么不 if (txtLine == null) { break; };工作?或者也许正确的答案是为什么它仍然将字符串 txtLine 设置为 null(字面意思)。按照我的理解,它应该在字符串为空的那一刻中断吗?我不希望它将字符串设置为“null”。但当 *.txt 文件中没有更多行时停止

try{
BufferedReader txtReader = new BufferedReader (new FileReader ("test.txt"));
while (true) {
// Reads one line.
println(txtLine);
if(txtLine == null){
break;
};
txtLine = txtReader.readLine();
nLines(txtLine);
}
txtReader.close();
} catch (IOException ex) {
throw new ErrorException(ex);
}

txtFile 变量定义为 IVAR

private int nChars = 0;
private String txtLine = new String();
private ArrayList <String> array = new ArrayList <String>();

最佳答案

我认为当您中断和将 txtLine 的值更改为从文件读取的下一行时的顺序是倒退的,您的代码应该类似于:

try{
BufferedReader txtReader = new BufferedReader (new FileReader ("test.txt"));
while (true) {
// Reads one line.
println(txtLine);
txtLine = txtReader.readLine();
// check after we read the value of txtLine
if(txtLine == null){
break;
}

nLines(txtLine);
}
txtReader.close();
} catch (IOException ex) {
throw new ErrorException(ex);
}

但这是一种更简洁(而且我认为更清晰)的形式:

try{
BufferedReader txtReader = new BufferedReader (new FileReader ("test.txt"));
while ((txtLine = txtReader.readLine()) != null) {
// Reads one line.
println(txtLine);
nLines(txtLine);
}
txtReader.close();
} catch (IOException ex) {
throw new ErrorException(ex);
}

其中 while ((txtLine = txtReader.readLine()) != null) 将 txtLine 设置为下一行,然后在继续之前检查 txtLine 是否不为 null。

关于java:使用缓冲阅读器并检查字符串是否为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12663324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com