【发布时间】:2019-12-26 02:59:11
【问题描述】:
我遇到了下面的代码sn-p
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scan=new Scanner(System.in);
boolean flag = scan.hasNext();
while(flag){
System.out.println(scan.nextLine());
}
System.out.println("End");
}
}
布尔标志一旦被赋值为 true 或 false 就不应再次更改,但我发现每当我在终端中键入内容时,while 循环都会再次执行。
有人可以解释一下每当我在终端中输入内容时如何重新评估标志吗?
注意:我的问题不是关于停止/关闭扫描器,而是关于了解如何重新评估循环条件。
【问题讨论】:
-
你需要在布尔值后面加上
boolean flag = scan.hasNext(); scan.nextLine(); -
有人可以解释如何重新评估标志:它总是被评估为相同的值,这正是问题所在,因为您将值分配给
flag一次,再也不会。 IE。scan.hasNext()只计算一次。 -
@JBNizet 在这种情况下,如果标志第一次设置为 true,为什么 while 循环不会进入无限循环
-
@Vivek 我很确定确实如此。你是如何确定它没有进入无限循环的?
-
@Turing85 你是对的,我很困惑,因为我不知道 nextLine 也会阻塞
标签: java while-loop java.util.scanner