【问题标题】:Cannot figure out how the nested for loop runs无法弄清楚嵌套的 for 循环是如何运行的
【发布时间】:2014-09-23 04:34:16
【问题描述】:

我无法弄清楚下面的 for 循环 是如何产生下面的输出的。具体来说,第三和第四个输出对我来说没有意义。 count2 等于 1 后如何等于 0,虽然在 for 循环中 没有减法运算符?

你能描述一下for循环是如何运​​行的吗?

脚本:

for (int count = 0; count <=3; count++) {
            for (int count2 = 0; count2 < count; count2++)
                System.out.println(count2);

输出:

0

0

1

0

1

2

【问题讨论】:

  • 这里的n值是多少?
  • @KickButtowski 实际上是“计数”。
  • 为了什么? @WilliamPrice
  • @user3628602 试试这段代码,看看你是否能更好地理解它。 for (int count = 0; count
  • @user3628602 调试器将向您展示循环的确切运行方式。

标签: java for-loop nested-loops


【解决方案1】:

我希望现在它能让你更清楚。

public class Test {
    public static void main(String[] args) {
    for (int count = 0 ; count <= 3 ; count++) {
        System.out.println("\ncount = " + count);
        for (int count2 = 0 ; count2 < count ; count2++)
            System.out.println("count2 = " + count2);
    }
  }
}

输出

count = 0

count = 1
count2 = 0

count = 2
count2 = 0
count2 = 1

count = 3
count2 = 0
count2 = 1
count2 = 2

** count2 循环只会运行(count-1) 次。

【讨论】:

  • 直到现在我才知道,每次第一个循环迭代时,第二个循环都会重置 count2 的值。这是否也适用于其他类型的循环,如 while 循环?
  • @user3628602 如果您自己尝试、调试并且如果仍然有一些问题在 SOW 上询问,那就太好了。到时候大家都会帮你的。
【解决方案2】:

我只是把正确的顺序,这样你就可以更好地理解它......

 public static void main(String[] args) {
        for (int count = 0 ; count <= 3 ; count++) {
            System.out.println("For Count = "+count);
            for (int count2 = 0 ; count2 < count ; count2++)
                System.out.println("-->  count2 = " + count2);
            System.out.println();
        }
      }  

输出

For Count = 0  

For Count = 1  
-->  count2 = 0

For Count = 2  
-->  count2 = 0  
-->  count2 = 1  

For Count = 3  
-->  count2 = 0  
-->  count2 = 1  
-->  count2 = 2      

【讨论】:

    【解决方案3】:

    您的问题是第二个 for 循环中的比较,通过将其与第一个循环的第一次迭代进行比较。这会生成您的零星代码,因为它会增加嵌套的 for 循环并检查比较,但例如在第一次迭代中,count 等于 0。它会中断嵌套循环并再次统计外循环,并且还会增加 @ 987654322@。这一次,您的嵌套循环可以在重置之前达到一个。

    这对于每个剩余循环都是一样的,嵌套到达外部循环的当前迭代并停止。外循环递增,内循环将从 0 开始,到外循环的迭代结束。

    我的建议是在第二个 for 循环中使用不同的值进行比较,除非您的输出是您想要的。

    【讨论】:

      【解决方案4】:

      每次第一个 for 循环迭代时,第二个 for 循环都会重新初始化。 第一个输出是第一个 forloop 的第一次迭代 第 2、3 个输出来自第 1 个 forloop 的第 2 次迭代 第 4、5、6 个输出来自第 1 个 forloop 的第 3 次迭代

      第一个 forloop 的每次迭代都会导致第二个 forloop 重置为 0

      【讨论】:

      • 直到现在我才知道,每次第一个循环迭代时,第二个循环都会重置 count2 的值。这是否也适用于其他类型的循环,如 while 循环?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-04-03
      • 2014-09-27
      • 2021-08-30
      • 1970-01-01
      • 2013-10-07
      • 2023-03-25
      • 1970-01-01
      相关资源
      最近更新 更多