在剛學習 For 迴圈時通常通會有印出三角型的練習

像是

*

**

***

***

**

*

又或是

    *

  ***

*****

等等的練習題

加上 IF 之後又會出現其它的變形題

而進階一點的題目就是數字甜甜圈

題目如下:

------------------------------

使用者輸入1~9一個數字輸出如下

input:

1

output:

1

1

input:

2

output:

111
121
111

222
212
222

input:

3

output:

11111
12221
12321
12221
11111

33333
32223
32123
32223
33333

以此類推

------------------------------

說其實小於等於0或者超過9也是可以執行

只是小於等於0不會有結果

而超過9後簡單的 print 會對不齊

當然只要用一些方法 print 就可以對齊了

但不是此練習的重點

這個練習為的是加強 For 及 IF 使用及訓練解題的邏輯

有興趣的人可以試試看

下面附上程式碼:

public static void main(String[] args) {
    int input = 5;
    int max = input * 2 - 1;

    for(int i=1; i<=max; i++){
        for(int j=1; j<=max-i+1; j++){
            System.out.print((i <= j) ? i : j);
        }
        for(int j=max-i+2; j<=max; j++){
            System.out.print((i > j) ? (max-i+1) : (max-j+1));
        }
        System.out.println();
    }

    System.out.println();

    for(int i=1; i<=max; i++){
        for(int j=1; j<=max-i+1; j++){
            System.out.print((i <= j) ? input-i+1 : input-j+1);
        }
        for(int j=max-i+2; j<=max; j++){
            System.out.print((i > j) ? i-input+1 : j-input+1);
        }
        System.out.println();
    }
}

如果不懂 print 中的語法

請參考另外一篇"IF的簡化"

當然這個練習的寫法不會只有一種

可以試著去簡化或改變寫法

arrow
arrow
    全站熱搜

    taurus770423 發表在 痞客邦 留言(0) 人氣()