Java 如何重新计算while循环条件
我遇到了下面的代码片段Java 如何重新计算while循环条件,java,while-loop,java.util.scanner,Java,While Loop,Java.util.scanner,我遇到了下面的代码片段 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.nex
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循环就会再次执行
有人能解释一下,每当我在终端中键入某些内容时,标志是如何重新计算的吗
注意:我的问题不是关于停止/关闭扫描仪,而是关于了解如何重新评估循环条件。我认为您在这里遇到的是scan.hasNext阻塞,直到第一次输入 那么,旗帜总是正确的
一旦进入循环,您将打印下一行,但scan.nextLine也会阻塞,直到您提供一个下线,即带有行尾的输入。您需要放置布尔标志=scan.hasNext;scan.nextLine;在布尔值之后,有人能解释一下标志是如何重新计算的吗:它总是被计算为相同的值,这正是问题所在,因为你给标志分配了一个值一次,再也没有了。也就是说,scan.hasNext只计算一次。@JBNizet在这种情况下,如果第一次将标志设置为true,为什么while循环不会进入无限循环time@Vivek我敢肯定是的。你是如何确定它不会进入无限循环的?@Turing85你是对的,我很困惑,因为我不知道nextLine也会阻塞