Java - 我的 while 循环有效,但我的 for 循环无效 - 转换它时遇到问题

标签 java loops while-loop

我认为如果我无法将 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 表达式 statementForUpdate的条件设置正确,但是我'我很难理解这里的差异。

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

最佳答案

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

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

为了完整起见,以下是您当前的 for循环工作原理:

  1. i = 0
  2. 如果i < number如果为真,则退出循环;否则,继续步骤3
  3. sum += i ( i 仍然是 0 )
  4. i++
  5. 转到第 2 步

第二遍时,i < number1 < number还是这样true如果number大于 1,因此转到步骤 3,执行 sum += ii1 ,然后继续。

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

<小时/>

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

关于Java - 我的 while 循环有效,但我的 for 循环无效 - 转换它时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60365637/

相关文章:

java - Spring Hibernate getCurrentSession() 当没有 session 时?

Bash 脚本 : for loop using a range in the form {0001. .$n}

javascript - 在测验反馈的 javascript 循环中返回多个反馈实例

java - 为什么我的密码 do-while 循环在 Java 中不起作用?我做错了什么?

java - 为什么这个 HashMap.get 返回一个空值?

java - 如何捕获继承类型的异常

java - 我们需要在 ScheduledExecutorService 上调用 awaitTermination 吗?

string - 在 R 中使用可变字符串引用对象

c - 如何在 C 中按值对数组中的每个元素进行 "delete"

mysql - 错误 1064 : Cannot execute while loop in mysql using variables