2015-09-06 95 views
0

查看此代码?使用扫描仪输入的所有for循环参数

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 (int i = from; i == to; i+=by) { 
     System.out.println(i); 
} 

我会明白这一切都是整型的默认为0使终端一样的初始所以for循环将停止,但如果我在循环之前初始化新的价值观开始为什么犯规工作?

+0

当'i'获得值'from'时,它不等于'to',所以循环从不执行。用'from'等于'to'来试试你的程序,你会发现它只会进入for循环一次。 – Tunaki

+0

那么你初始化你的变量是什么?根据你的变量,'i + by'可能会跳过'to'的值 – Zarwan

+0

如果我初始化它们:从= 1到= 10,by = 2。如果终止条件是“我==为“。我意识到如果输入没有正确输入,循环会变得混乱。我很好奇它为什么永远不会执行。 –

回答

2

for循环中的条件是而不是终止条件。这是延续的条件。

一个for循环,如:

for (INITIALIZATION; CONDITION; UPDATE) 
    STATEMENT 

是相当于

INITIALIZATION 
while (CONDITION) { 
    STATEMENT 
    UPDATE 
} 

所以循环将继续只要条件为真当它是真实的,而不是结束。

所以,当你输入一个to这比你from更大,但同时又提出在条件i == to,因为i被初始化为fromfromto不同,这个条件将不会是真实的,因此循环不能运行 - 它只在真实的情况下运行。

i <= to作品,因为从比to较低值,所以这个条件为真一路i开始直到i的价值超过to

+0

感谢您的详细解释。 –