这个条件有什么作用(BufferedReader 和 InputStreamReader)?
What does this condition do (BufferredReader and InputStreamReader)?
我目前正在阅读一段代码,我发现了一个像这样开始的方法:
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput;
while ((userInput = stdIn.readLine()) != null) {
}
谁能给我解释一下当时的情况? a = b != c 对我来说似乎很奇怪。
好像你的眼睛扫过一对括号:
while ( (userInput = stdIn.readLine() ) != null) {
}
我已经尝试在上面说得更清楚了。
正在为变量 userInput
赋值 stdIn.readLine()
。虽然 userInput
在该赋值后不为空,但循环仍在继续。
这只是处理 userInput
更新以及检查 null
的单行代码
方括号(userInput = stdIn.readLine())
中的赋值同时做了两件事:它将行分配给userInput变量并且将自身计算为该值。但是,如果没有读取任何内容,则 readLine()
returns null
和整个表达式的计算结果为 null
.
因此,当用户输入中有行时,条件 (userInput = stdIn.readLine() ) != null
成立,并且 while
循环继续。当用户输入中没有更多行时,条件为假,while
循环停止。
=
是赋值运算符,不是比较运算符。
(a = b) != c
将 b
的值赋给 a
,然后将其与 c
.
进行比较
如
while ((userInput = stdIn.readLine()) != null) { ... }
stdIn.readLine()
正在获取一个值,然后将其存储为 userInput
,并检查该值以确保它不是 null
,以便 while 循环进步。这导致循环读取文件的每一行,直到用完要读取的行。
类似于:
int a = 0;
int b = 0;
while ((a = b++) != 10) {
System.out.println(a);
};
这里我们给a赋值b
,并检查它的值是否为10。
同样,userInput = stdIn.readLine()
意味着我们正在读取一行,将其分配给 userInput
变量并检查直到它读取 null
.
我目前正在阅读一段代码,我发现了一个像这样开始的方法:
BufferedReader stdIn = new BufferedReader(new InputStreamReader(System.in));
String userInput;
while ((userInput = stdIn.readLine()) != null) {
}
谁能给我解释一下当时的情况? a = b != c 对我来说似乎很奇怪。
好像你的眼睛扫过一对括号:
while ( (userInput = stdIn.readLine() ) != null) {
}
我已经尝试在上面说得更清楚了。
正在为变量 userInput
赋值 stdIn.readLine()
。虽然 userInput
在该赋值后不为空,但循环仍在继续。
这只是处理 userInput
更新以及检查 null
方括号(userInput = stdIn.readLine())
中的赋值同时做了两件事:它将行分配给userInput变量并且将自身计算为该值。但是,如果没有读取任何内容,则 readLine()
returns null
和整个表达式的计算结果为 null
.
因此,当用户输入中有行时,条件 (userInput = stdIn.readLine() ) != null
成立,并且 while
循环继续。当用户输入中没有更多行时,条件为假,while
循环停止。
=
是赋值运算符,不是比较运算符。
(a = b) != c
将 b
的值赋给 a
,然后将其与 c
.
如
while ((userInput = stdIn.readLine()) != null) { ... }
stdIn.readLine()
正在获取一个值,然后将其存储为 userInput
,并检查该值以确保它不是 null
,以便 while 循环进步。这导致循环读取文件的每一行,直到用完要读取的行。
类似于:
int a = 0;
int b = 0;
while ((a = b++) != 10) {
System.out.println(a);
};
这里我们给a赋值b
,并检查它的值是否为10。
同样,userInput = stdIn.readLine()
意味着我们正在读取一行,将其分配给 userInput
变量并检查直到它读取 null
.