class Example2{
    public static void main(String args[])
        throws java.io.IOException {
            int i;
            System.out.println("Press S to Stop!");
            for(i=0 ; (char) System.in.read() != 'S' ; i++){
                System.out.print(i+" ");
            }
        }
    }


我认为它将显示如下数字:
1个
2
3
4
5
6
7 ....直到我按S键,但除了第一个println表达式外,它什么都没有显示。为什么会这样?

最佳答案

for循环的工作方式如下:

for(initialization; termination; increment) statement


java nutsandbolts

initialization在第一次运行statement之前运行,increment在运行之后运行,并且termination在每次statement运行之前进行评估。

在您的示例中,termination(char) System.in.read() != 'S',这意味着在每次重复中,程序都会从​​System.in读取另一个字符。现在System.in的缓冲区不包含任何字符,因此程序将等待用户输入其可以处理的任何内容。每次循环重复都会发生这种情况。

因此,您的程序将等待用户输入任何内容,并且直到发生这种情况时才会终止。

10-07 12:35
查看更多