使用扫描仪输入的所有for循环参数
问题描述:
查看此代码?使用扫描仪输入的所有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循环将停止,但如果我在循环之前初始化新的价值观开始为什么犯规工作?
答
for
循环中的条件是而不是终止条件。这是延续的条件。
一个for
循环,如:
for (INITIALIZATION; CONDITION; UPDATE)
STATEMENT
是相当于
INITIALIZATION
while (CONDITION) {
STATEMENT
UPDATE
}
所以循环将继续只要条件为真当它是真实的,而不是结束。
所以,当你输入一个to
这比你from
更大,但同时又提出在条件i == to
,因为i
被初始化为from
和from
比to
不同,这个条件将不会是真实的,因此循环不能运行 - 它只在真实的情况下运行。
i <= to
作品,因为从比to
较低值,所以这个条件为真一路i
开始直到i
的价值超过to
。
+0
感谢您的详细解释。 –
当'i'获得值'from'时,它不等于'to',所以循环从不执行。用'from'等于'to'来试试你的程序,你会发现它只会进入for循环一次。 – Tunaki
那么你初始化你的变量是什么?根据你的变量,'i + by'可能会跳过'to'的值 – Zarwan
如果我初始化它们:从= 1到= 10,by = 2。如果终止条件是“我==为“。我意识到如果输入没有正确输入,循环会变得混乱。我很好奇它为什么永远不会执行。 –