【问题标题】:What is this Nested For Loop doing? (Asterisk Right Triangle)这个嵌套的 For 循环在做什么? (星号直角三角形)
【发布时间】:2016-11-02 05:01:02
【问题描述】:

我刚开始学习“嵌套 for 循环”。但是我的问题是嵌套的 for 循环每次循环时到底在做什么?我仍然对变量“i”在做什么以及变量“j”在做什么感到困惑。如果你能解释每个循环之后发生了什么,那么嵌套的 for 循环就会更加清晰。

import java.util.Scanner;

public class LoopStatement {

    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        int numStar;

        System.out.print("Number of stars: ");
        numStar = input.nextInt();

        while (numStar < 1 && numStar > 20) {
            System.out.println("Enter a valid number ");
            numStar = input.nextInt();
        }

        for (int i = 1; i <= numStar; i++) {
            for (int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

如果我为 numStar

输入 4,这就是我得到的输出
*
**
***
****

【问题讨论】:

  • 嵌套循环的行为方式与非嵌套循环完全相同。在继续编写代码之前,它们会运行到完成。对于嵌套循环,“继续”意味着转到外循环的下一次迭代。
  • 当 i = 1 时,内循环从 1 变为 1(只有一个 *) 当 i = 2 时,内循环从 1 变为 2(两个 *) 当 i = 3 时,内循环从 1 变为 3(三个 *)...

标签: java loops for-loop while-loop


【解决方案1】:

嵌套循环实际上并没有什么特别之处,它们的行为与常规循环完全相同。

特别是这里的外部循环从i 循环到1numStar,因此打印numStar 行。

嵌套循环从j 循环到1i,其中i 是当前正在打印的行数。在每次迭代中,它都会打印一颗星,因此它总共会打印i 星。

因此,它在行号1 上打印1 星号,2 行号上的星号2

【讨论】:

    【解决方案2】:

    尝试在这样的论文中写下来:

    i=1  j=1 => *
    i=1  j=2 => (j<=i) is false
    .
    .
    i=2  j=1  => *
                 *
    
    i=2  j=2  => *
                 **
    .
    .
    

    如果您尝试将其写在论文中,您将获得输出。

    【讨论】:

      【解决方案3】:

      要了解嵌套循环,您必须了解 for 结构。听起来你没听懂。

      从基础开始:

      for (int i = 1; i <= numStar; i++) {
          System.out.println(i); 
      }
      

      上面的代码完全按照以下步骤迭代 numStart: a-以 i=1 开头:int i = 1 b-测试条件:i &lt;= numStar c-在屏幕上打印i的值:System.out.println(i) d-增量 i 值:i++

      它在满足条件时执行:i &lt;= numStar。只有条件满足才会执行步骤 c 和 d。

      被测试的循环遵循相同的逻辑:

      for (int i = 1; i <= numStar; i++) {
          for (int j = 1; j <= i; j++) {
             System.out.print("*");
          }
          System.out.println();
      }
      

      当 i=1 -> j 从 1 迭代到 1。所以它打印“*”

      当 i=2 -> j 从 1 迭代到 2。所以它打印“**”

      当 i=3 -> j 从 1 迭代到 3。所以它打印“***”

      等等……

      嵌套迭代完成后有换行符:System.out.println();

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-07-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-01-03
        • 1970-01-01
        相关资源
        最近更新 更多