【发布时间】:2015-09-06 18:03:22
【问题描述】:
查看这段代码?
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 循环将停止,但如果我在循环开始之前初始化新值,为什么它不起作用?
【问题讨论】:
-
当
i获得from的值时,它不等于to,因此永远不会执行循环。用from等于to试试你的程序,你会看到它只会进入for循环一次。 -
那么你初始化你的变量是什么?根据您的变量,
i+by可能会跳过to的值 -
如果我初始化它们:from = 1, to = 10, by = 2。如果终止条件是“i == to”,则循环根本不会运行。我意识到如果输入没有正确输入,循环会变得混乱。我很好奇为什么它永远不会执行。
-
@Grez.Kev 查看我的评论以了解原因。还可以在此处查看有关 for 循环的 Oracle 教程:docs.oracle.com/javase/tutorial/java/nutsandbolts/for.html
-
我现在明白了。我从一个错误的陈述开始,所以它永远不会执行。谢谢图纳基
标签: java for-loop java.util.scanner