看看这段代码?
import java.util.Scanner;
public class CountingMachineRevisited {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
int from, to, by;
System.out.print("Count from: ");
from = scan.nextInt();
System.out.println("Count to: ");
to = scan.nextInt();
System.out.println("Count by: ");
by = scan.nextInt();
for (int i = from; i <= to; i+=by) {
System.out.println(i);
}
}
}
这段代码按照我想要的方式工作,但是如果我将 for 循环的终止条件更改为 i == to,它就不起作用。
for (int i = from; i == to; i+=by) {
System.out.println(i);
}
我理解这是所有 int 默认为 0 使得终止与初始相同,因此 for 循环将停止,但是如果我在循环开始之前初始化新值,为什么它不起作用?
最佳答案
for
中的条件循环不是终止条件。这是一个延续条件。
一个for
循环如下:
for ( INITIALIZATION; CONDITION; UPDATE )
STATEMENT
相当于
INITIALIZATION
while ( CONDITION ) {
STATEMENT
UPDATE
}
因此,只要条件为真,循环就会继续,而不会在条件为真时终止。
所以当你输入 to
这比你的 from
还要大,但放入条件 i == to
,自 i
初始化为from
,和from
与 to
不同,该条件不会为真,因此循环无法运行 - 它仅在为真时运行。
i <= to
有效是因为 i
从低于 to
的值开始,所以这个条件一直成立,直到 i
的值超过to
.
关于java - 对所有 for 循环参数使用扫描仪输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32426625/