使用扫描仪输入来获取所有for循环参数

时间:2015-09-06 18:03:22

标签: java for-loop java.util.scanner

看看这段代码?

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>

1 个答案:

答案 0 :(得分:2)

for循环中的条件终止条件。这是一个延续条件。

for循环,如:

for ( INITIALIZATION; CONDITION; UPDATE )
    STATEMENT

相当于

INITIALIZATION
while ( CONDITION ) {
    STATEMENT
    UPDATE
}

所以只要条件为真,循环就会继续 ,而不是在它为真时终止。

因此,如果您输入的to大于from,但条件为i == to,则i初始化为{{1} }},fromfrom不同,该条件不成立,因此循环无法运行 - 只有在它为真时才会运行。

to有效,因为i <= to的起始值低于i,所以这条件一直都是正确的,直到to的值超过{ {1}}。

相关问题