首页 > 解决方案 > Java - 我的 while 循环有效,但我的 for 循环没有 - 转换时遇到问题

问题描述

我假设如果我不能将我的 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 expression statement设置ForUpdate正确,但我无法理解这里的差异。

此外,看起来这个练习正在尝试教授循环来解决迭代问题。但我怀疑这并没有帮助我练习递归。也许这个问题有一个更好的递归解决方案。只是在这里大声思考。谢谢!

标签: javaloopswhile-loop

解决方案


不同之处在于,在您的while循环中,您在将其添加到i 之前sum递增,但在您的for循环中,它在之后。

如果while产生正确的结果,您可以for通过从 1 开始而不是 0 并继续 while<= number而不是来调整您的结果< number

为了完整起见,以下是当前for循环的工作方式:

  1. i = 0
  2. 如果i < number不为真则退出循环;否则,继续执行步骤 3
  3. sum += ii还在0
  4. i++
  5. 转到第 2 步

在第二遍中,i < numberis 1 < numberso still trueifnumber大于 1,所以您转到第 3 步,执行sum += iwhile iis 1,然后继续。

最终i < number不再是真的,循环退出。


对于这样的问题,最好的方法通常是使用 IDE 中内置的调试器逐语句逐句执行代码,同时查看变量的值。这可以揭示事情是如何运作良好的。这篇文章可能会有所帮助:如何调试小程序


推荐阅读