我认为如果我无法将 while 循环转换为 for 循环,那么我就没有完全理解这里的概念。这是我的工作 while 循环:
(我正在尝试实现一个程序,该程序计算总和 1+2+3+...+n,其中 n 作为用户输入给出。)
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Enter a number: ");
int number = Integer.valueOf(scanner.nextLine());
int sum = 0;
int i = 0;
while (i < number) {
i++;
sum += i;
}
System.out.println(sum);
我在这里查看该用户的答案:https://stackoverflow.com/a/36023451/11522261 并尝试实现它,但它不起作用。
.....
for (i = 0; i < number; i++){
sum += i;
}
System.out.println(sum);
看起来For Init
表达式
statement
和ForUpdate
的条件设置正确,但是我'我很难理解这里的差异。
此外,看起来这个练习正在尝试教授循环来解决迭代问题。但我怀疑这并不能帮助我练习递归。也许这个问题有一个递归的解决方案会更好。只是在这里大声思考。谢谢!
最佳答案
不同之处在于您的 while
循环,您正在递增 i
在将其添加到 sum
之前,但是在你的 for
中循环,就在后面。
如果while
正在产生正确的结果,您可以调整您的 for
从 1 而不是 0 开始并继续 while <= number
而不是< number
.
为了完整起见,以下是您当前的 for
循环工作原理:
-
i = 0
- 如果
i < number
如果不为真,则退出循环;否则,继续步骤3 -
sum += i
(i
仍然是0
) -
i++
- 转到第 2 步
第二遍时,i < number
是 1 < number
还是这样true
如果number
大于 1,因此转到步骤 3,执行 sum += i
而i
是 1
,然后继续。
最终i < number
不再为真,循环退出。
对于此类问题,最好的方法通常是使用 IDE 中内置的调试器逐条语句地执行代码,同时查看变量的值。这可以揭示事情是如何运作良好的。这篇文章可能会有所帮助:How to debug small programs
关于Java - 我的 while 循环有效,但我的 for 循环无效 - 转换它时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60365637/