java:使用缓冲读取器并检查字符串是否为空
为什么不java:使用缓冲读取器并检查字符串是否为空,java,null,bufferedreader,Java,Null,Bufferedreader,为什么不if(txtLine==null){break;}工作?或者正确的答案是,为什么它仍然将字符串txtLine设置为null(字面意思)。按照我的理解,它应该在字符串为null时中断?我不希望它将字符串设置为“null”。但是当*.txt文件中没有更多行时停止 try{ BufferedReader txtReader = new BufferedReader (new FileReader ("test.txt")); while (true) { //
if(txtLine==null){break;}代码>工作?或者正确的答案是,为什么它仍然将字符串txtLine
设置为null(字面意思)。按照我的理解,它应该在字符串为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>();
private int-nChars=0;
私有字符串txtLine=新字符串();
私有ArrayList数组=新ArrayList();
我认为当您中断时,以及当您将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);
}
但这是一种更简洁(我认为更清晰)的形式:
Wherewhile((txtLine=txtleader.readLine())!=null)
将txtLine设置为下一行,然后在继续之前检查txtLine是否为null。我认为当您中断时以及将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);
}
但这是一种更简洁(我认为更清晰)的形式:
Wherewhile((txtLine=txtReader.readLine())!=null)
将txtLine设置为下一行,然后在继续之前检查txtLine是否为null。txtLine是在哪里定义的?你能把它添加到你的代码片段中吗?如果你通过Java中的Scanner
或BufferedReader
搜索阅读用户输入,你会立即得到数以百万计的结果,这将消除你的疑虑。我建议你在使用IOBTW时,一定要有最终的结果,你可以移动txtLine=txtleader.readLine();if(txtLine==null)之前和if(txtLine==null)之后的println(txtLine)@Lews:nLines只是将该行添加到数组中,然后返回其大小txtLine在哪里定义?你能把它添加到你的代码片段中吗?如果你通过Java中的Scanner
或BufferedReader
搜索阅读用户输入,你会立即得到数以百万计的结果,这将消除你的疑虑。我建议你在使用IOBTW时,一定要有最终的结果,你可以移动txtLine=txtleader.readLine();if(txtLine==null)之前和if(txtLine==null)之后的println(txtLine)@Lews:nLines只需将该行添加到数组中,然后返回其大小正确!这是txtLine=txtReader.readLine()的顺序代码>正如您所指出的。当然,在执行条件检查之前,它需要读取新行以检查它是否为null。正确!这是txtLine=txtReader.readLine()的顺序代码>正如您所指出的。当然,在执行条件检查之前,它需要读取新行以检查它是否为null。