我不知道这个程序是如何工作的

时间:2015-02-18 00:45:14

标签: java

public class Pattern {

    public static void main(String[] args) {

        int a;
        String b = "*";
        int d = 0;

        for (a = 0; a < 10; a++) {
            for (int c = 10; c > d; c--) {
                System.out.print(b);
            }
            System.out.println();
            d = d - 2;
        }
    }
}

该程序打印出一个递增的星形图案。

**********
************
**************
****************
******************
********************
**********************
************************
**************************
****************************

它工作正常,但我认为这将打印一个递减的星形图案。任何人都可以解释这个程序是如何工作的?我对Java比较陌生。

2 个答案:

答案 0 :(得分:3)

你在这里做了一些有趣的事情。

在外部for循环的第一次交互中,内部循环以值开始:c = 10,d = 0,下一次迭代:c = 10,d = -2,next ... c = 10,d = -4等等。首先它将打印10颗星,然后是12颗星,然后是14颗星......

希望这有帮助。

变化

for (int c = 10; c > d; c--)

for (int c = 10; c > a; c--)

看看会发生什么。

答案 1 :(得分:0)

外部for循环

(a = 0; a < 10; a++) {...}

基本上表示从0到9开始打印的行数。对于每一行或a,d减去2。

a = 0, c goes from 10 to 1 (d = 0) printing 10 '*'s
a = 1, c goes from 10 to -1 (d = -2) printing 12 '*'s
a = 2, c goes from 10 to -3 (d = -4) printing 14 '*'s and so on

对于每一行,d下降2,导致星数上升2。