看看这段代码?
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循环将停止,但如果我在循环开始之前初始化新值,为什么它不起作用?< / p>
答案 0 :(得分:2)
for
循环中的条件不终止条件。这是一个延续条件。
for
循环,如:
for ( INITIALIZATION; CONDITION; UPDATE )
STATEMENT
相当于
INITIALIZATION
while ( CONDITION ) {
STATEMENT
UPDATE
}
所以只要条件为真,循环就会继续 ,而不是在它为真时终止。
因此,如果您输入的to
大于from
,但条件为i == to
,则i
初始化为{{1} }},from
与from
不同,该条件不成立,因此循环无法运行 - 只有在它为真时才会运行。
to
有效,因为i <= to
的起始值低于i
,所以这条件一直都是正确的,直到to
的值超过{ {1}}。