Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 为什么我必须第二次在while中编写line=reader.readLine()?我想我已经在上面定义过了_Java - Fatal编程技术网

Java 为什么我必须第二次在while中编写line=reader.readLine()?我想我已经在上面定义过了

Java 为什么我必须第二次在while中编写line=reader.readLine()?我想我已经在上面定义过了,java,Java,我希望得到详细的回答,我已经试过whileline!=null,但它以ArrayIndexOutOfBoundsException结束 定义变量和分配变量之间存在差异,我认为这是一种混为一谈 在第一行中,您完全正确-您定义了字符串行,并将其赋值为reader.readLine。这与while循环内部的调用不同,while循环每次都将变量重新分配到不同的行 只需知道,循环并不会约束您避免数组中的填充过多,这就是为什么您只检查行!=null,您有ArrayIndexOutOfBoundsExcept

我希望得到详细的回答,我已经试过whileline!=null,但它以ArrayIndexOutOfBoundsException结束


定义变量和分配变量之间存在差异,我认为这是一种混为一谈

在第一行中,您完全正确-您定义了字符串行,并将其赋值为reader.readLine。这与while循环内部的调用不同,while循环每次都将变量重新分配到不同的行

只需知道,循环并不会约束您避免数组中的填充过多,这就是为什么您只检查行!=null,您有ArrayIndexOutOfBoundsException。你可能想在上面加上这样的东西来确定这个事实。您的文件可能只有不到500行,或者可能有501行。这有助于防止这种情况;如果少于500行,读取器将生成null;如果你有更多的数据,那么你会停下来,因为你没有其他地方可以放置数据

while(line = reader.readLine() != null && count < inits.length) {
    // logic
}

第一个字符串line=reader.readLine读取输入文件的第一行。要读取更多的行,需要反复调用reader.readLine-结果恰好被放入一个同名的变量中。考虑使用调试器或在每个时间点打印出行的值,以便更好地了解交互。如果只调用一次,只读取一行,它将如何读取文件中的多行。在循环期间,您不改变A,因此循环将以RealRead的长度循环。Read Lead返回非null。如果超过500倍,intis阵列最终将溢出。
while(line = reader.readLine() != null && count < inits.length) {
    // logic
}