行 1 2 3
星 3 2 1
第一行有三顆星,第二行有兩顆星,第三行有一顆星。
想辦法想出一個公式,譬如3=1*3也等於1+2,也等於根號9…等
三行只是視意,要動態的方式想,譬如
行 1 2 3 4 5
星 5 4 3 2 1
,我想到的是:最後一行 + 1 - 行
先看最上面的行那一行:
第一行-->3+1-1=3(星數),第二行-->3+1-2=2(星數),第三行-->3+1-3=1(星數)
同樣的,五行也是一樣
做法:
第一個迴圈負責行,第二個迴圈負責星,將公式放到星數那一行*** ** * private static void start1(int startCount) { System.out.println(); for (int i = 1; i <= startCount; i++) {// 行數 for (int j = 1; j <= startCount + 1 - i; j++) {// 星數 System.out.print("*"); } System.out.println(); } }行 1 2 3
星 1 2 3
公式:行
* ** *** private static void start2(int startCount) { System.out.println(); for (int i = 1; i <= startCount; i++) {// 行數 for (int j = 1; j <= i; j++) {// 星數 System.out.print("*"); } System.out.println(); } }這裡開始會有輸入空格的情形,也就是要多一個迴圈
行 1 2 3
空 0 1 2
星 3 2 1
空格公式:行 - 1
星號公式:最後一行 + 1 - 行
*** ** * private static void start3(int startCount) { System.out.println(); for (int i = 1; i <= startCount; i++) {// 行數 for (int j = 1; j <= i-1; j++) {// 空格數 System.out.print(" "); } for (int j = 1; j <= startCount + 1 - i; j++) {// 星數 System.out.print("*"); } System.out.println(); } }行 1 2 3
空 2 1 0
星 1 2 3
空格公式:最後一行 - 行
星號公式:行
* ** *** private static void start4(int startCount) { System.out.println(); for (int i = 1; i <= startCount; i++) {// 行數 for (int j = 1; j <= startCount-i; j++) {// 空格數 System.out.print(" "); } for (int k = 1; k <= i; k++) {// 星數 System.out.print("*"); } System.out.println(); } }行 1 2 3
空 2 1 0
星 1 3 5
空格公式:最後一行 - 行
星號公式:行 * 2 - 1
* *** ***** private static void start5(int startCount) { System.out.println(); for (int i = 1; i <= startCount; i++) {// 行數 for (int j = 1; j <= startCount-i; j++) {// 空格數 System.out.print(" "); } for (int k = 1; k <= i*2-1; k++) {// 星數 System.out.print("*"); } System.out.println(); } }行 1 2 3
空 0 1 2
星 5 3 1
空格公式:行 - 1
星號公式:(最後一行 - 行) * 2 + 1
***** *** * private static void start6(int startCount) { System.out.println(); for (int i = 1; i <= startCount; i++) {// 行數 for (int j = 1; j <= i-1; j++) {// 空格數 System.out.print(" "); } for (int k=1;k<=2*(startCount-i)+1;k++) {// 星數 System.out.print("*"); } System.out.println(); } }上三角形:
行 1 2 3
空 2 1 0
星 1 3 5
空格公式:最後一行 - 行
星號公式:行 * 2 - 1
下三角形(中間不算):
行 1 2
空 1 2
星 3 1
空格公式:行
星號公式:(最後一行 - 行) * 2 + 1
* *** ***** *** * private static void start7(int startCount) { System.out.println(); for (int i = 1; i <= startCount; i++) {// 行數 for (int j = 1; j <= startCount-i; j++) {// 空格數 System.out.print(" "); } for (int k = 1; k <= i*2-1; k++) {// 星數 System.out.print("*"); } System.out.println(); } startCount -= 1;//扣中間那一行 for (int x = 1; x <= startCount; x++) {// 行數 for (int y = 1; y <= x; y++) {// 空格數 System.out.print(" "); } for (int z=1;z<=2*(startCount-x)+1;z++) {// 星數 System.out.print("*"); } System.out.println(); } }上三角形:
行 1 2 3
空 0 1 2
星 5 3 1
空格公式:行 - 1
星號公式:(最後一行 - 行) * 2 + 1
下三角形(中間不算):
行 1 2
空 1 0
星 3 5
空格公式:最後一行 - 行
星號公式:行 * 2 + 1
***** *** * *** ***** private static void start8(int startCount) { System.out.println(); for (int i = 1; i <= startCount; i++) {// 行數 for (int j = 1; j <= i-1; j++) {// 空格數 System.out.print(" "); } for (int k=1;k<=2*(startCount-i)+1;k++) {// 星數 System.out.print("*"); } System.out.println(); } startCount -= 1;//扣中間那一行 for (int x = 1; x <= startCount; x++) {// 行數 for (int y = 1; y <= startCount-x; y++) {// 空格數 System.out.print(" "); } for (int z = 1; z <= x*2+1; z++) {// 星數 System.out.print("*"); } System.out.println(); } }總結:用這種方法,什麼ijkxyz永遠都是1,永遠都是<=,永遠都是ijkxyz++,看起來一目了然,比較舒服
沒有留言:
張貼留言