在剛學習 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的簡化"
當然這個練習的寫法不會只有一種
可以試著去簡化或改變寫法
留言列表