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
的缓冲区不包含任何字符,因此程序将等待用户输入其可以处理的任何内容。每次循环重复都会发生这种情况。因此,您的程序将等待用户输入任何内容,并且直到发生这种情况时才会终止。