这个Nested For Loop在做什么? (星号右三角)

时间:2016-11-02 05:01:03

标签: java loops for-loop while-loop

我刚开始学习“嵌套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();
        }
    }
}

所以如果我输入 4 numStar

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

3 个答案:

答案 0 :(得分:0)

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

具体来说,外部循环从i循环为1numStar,因此会打印numStar行。

j 1i的嵌套循环循环,其中i是要打印的当前行的编号。在每次迭代中,它会打印一颗星,因此它会打印出i颗星。

因此,它会在行号1上打印1星,在行号2上打印2个星号等。

答案 1 :(得分:0)

尝试写下这样的论文:

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

i=2  j=2  => *
             **
.
.

如果您尝试在纸上书写,您将获得输出。

答案 2 :(得分:0)

为了理解嵌套循环,您必须了解for结构。听起来你没有得到它。

来自基础知识:

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

上面的代码按照以下步骤正好迭代numStart: a-从i = 1开始:int i = 1 b-测试条件:i <= numStar c-在屏幕上打印i的值:System.out.println(i) d-递增i值:i++

在条件满足时执行:i <= 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时 - &gt; j从1迭代到1.因此它打印&#34; *&#34;

当i = 2时 - &gt; j从1到2迭代。因此它打印&#34; **&#34;

当i = 3时 - &gt; j从1到3迭代。因此它打印&#34; ***&#34;

依旧......

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