【问题标题】:triple nested for loop in java logicjava逻辑中的三重嵌套for循环
【发布时间】:2017-03-16 09:41:19
【问题描述】:

我正在及时运行一本名为 java 的教科书上的代码,我可以看到输出,但我不完全理解这个嵌套 for 循环的过程。

for (int die1 = 1; die1 <= 6; die1++)
    for (int die2 = 1; die2 <= 6; die2++)
        for (int die3 = 1; die3 <= 6; die3++)
            System.out.println(die1 + die2 + die3 + " From " + die1 + "+" + die2 + "+" + die3);

骰子数的输出结果是这样的, 111 112 113 114 115 116

我能理解。第三个 for 循环循环 6 次,其中 die3 每次递增并显示输出。

下一行输出给出

121 122 123 124 125 126

这是我变得有点困惑的地方。我可以看到 die2 现在增加了 1 并增加到了 2,但我对 die3 的值现在如何回到 1 并再次增加感到困惑。有人可以向我解释这个嵌套 for 循环中发生的过程吗?谢谢

此外,是否通过将“{}”括号应用于每个循环来改变逻辑?

【问题讨论】:

  • for (int die3 =1; ........) 每次创建循环时都将 die3 设置为 1。添加 {} 不会改变逻辑。

标签: java for-loop nested-loops


【解决方案1】:

添加括号不会改变逻辑,因为在这种情况下,括号内的每个语句都只有一行。如果你想在一个块中包含多行,你需要括号(尽管总是使用它们是个好主意 - 不会花费你任何东西并使代码更具可读性)。

至于代码是如何工作的,我们来看看吧。

  1. 我们进入一个从 1 到 6 的循环。这个循环从 1 开始。
  2. 我们进入一个从 1 到 6 的新循环。这也从 1 开始。
  3. 我们从 1-6 进入最后一个循环。这从 1 开始。
  4. 此时第一个打印语句发生,打印 111。
  5. 第 3 步的循环遍历所有 6 个数字,打印 111-116。
  6. 第 3 步的循环已经结束,所以现在第 2 步的循环可以从 1 递增到 2
  7. 循环 2 之后的语句是循环 3,因此从 1 开始新的循环。
  8. 打印语句再次为新的 1-6 内部循环启动,导致打印数字 121-126

如果您仍然不明白,一个很棒的工具是设置断点并单步执行代码。你可以一步一步看到发生了什么。

【讨论】:

  • 谢谢,这很有道理。
  • @EuanJohnston 乐于助人!如果您投票并接受答案,那就太棒了。
  • 显然我的名声不够高,我试过了。
猜你喜欢
  • 1970-01-01
  • 2020-08-09
  • 1970-01-01
  • 1970-01-01
  • 2021-06-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多