【问题标题】:Are these nested loops? Java这些是嵌套循环吗?爪哇
【发布时间】:2013-09-18 05:07:20
【问题描述】:

这段代码是显示嵌套循环还是只是一个接一个的大量循环?它们都在第一个循环内,但不在彼此内。这是一个好习惯吗?

    for (int outputDigits = STARTING_NUMBER; outputDigits <= MAX_NUMBER; outputDigits = outputDigits + 2) {  // controls number output

        for (int innerDashes = dashIncrement; innerDashes <= DASHES; innerDashes++) {      // inner dashes
            System.out.print("-");
        }


            for (int digits = 1; digits <= outputDigits; digits++) {           // prints the number x amount of times
                System.out.print(outputDigits);
            }


                for (int outerDashes = dashIncrement; outerDashes <= DASHES; outerDashes++) {  // outer dashes
                    System.out.print("-");
                }
        System.out.println();
        dashIncrement++;
            }

【问题讨论】:

    标签: java loops nested-loops


    【解决方案1】:

    它是嵌套循环和一个接一个循环的组合。代码看起来不容易阅读。更好的方法是拥有一个名为 printCharacters 的私有函数,它将您的破折号字符作为输入以及需要打印的时间

    private void printString(String inputString, int count) {
    for (int i=0;i<=count;i++ {
    System.out.print(inputString);
    

    } }

    for (int outputDigits = STARTING_NUMBER; outputDigits <= MAX_NUMBER; outputDigits = outputDigits + 2) {  // controls number output
    
       printString("-",DASHES-dashIncrement);
    
            for (int digits = 1; digits <= outputDigits; digits++) {           // prints the number x amount of times
                System.out.print(outputDigits);
            }
    
    
               printString("-",DASHES-dashIncrement);
        System.out.println();
        dashIncrement++;
            }
    

    【讨论】:

      【解决方案2】:

      我不确定这里的问题是什么。这里有明显的嵌套循环,以及一个接一个的连续循环。好习惯?是的,如果您要解决的问题需要它,那么这样做是完全可以的。使用嵌套循环没有错;事实上,许多算法都需要它们。

      【讨论】:

        【解决方案3】:

        由于缩进不当,您感到困惑。内部的三个 for 循环(innerDashes、digits 和 outerDashes)都嵌套在外部 for 循环(outputDigits)中,并且应该在相同的缩进处。这里只有一层嵌套。所有三个内部循环都处于相同的嵌套级别。

        另外,对于只包含一个需要循环的语句的 for 循环,我建议不要使用大括号{}。

        【讨论】:

        • 相反,我建议始终使用大括号。它更清晰,缺少大括号会导致细微的错误,例如不小心放了一个';'在 for 语句的末尾。此外,如果您需要在循环中添加其他语句,大括号已经存在。
        • 我想你在这些方面是对的。但我总是发现没有大括号的单语句 for 循环更简洁。也许这是个人选择。
        • 我也做过/做过,但我注意到它们很少会保留为单语句循环,因此我开始添加大括号。这真的取决于它周围发生了什么样的代码。
        【解决方案4】:

        是的,你有几个循环嵌套在另一个循环中。

        至于这是否是好的做法,这取决于。是否有意义?编程中没有普遍的真理(嗯,除了少数),所以你无法学习“不要使用嵌套循环”之类的规则。

        尽管查看您的代码,但使用“提取方法”重构将破折号打印 for 循环转换为单独的方法确实会更清晰。

        【讨论】:

          【解决方案5】:

          嵌套循环是这样的:

          for(...){
              for(...){
                   // Your code comes here.
              }
          }
          

          循环中的循环称为嵌套循环。您的代码满足此语句,是的,这就是嵌套循环的示例。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-01-27
            • 2013-08-19
            • 2017-03-06
            • 1970-01-01
            • 1970-01-01
            • 2011-05-05
            • 2021-01-01
            • 2018-09-16
            相关资源
            最近更新 更多