在一個java交流群上面看到這樣一個圖片:
自己看了一下,覺得好玩兒,自己就動手寫了一個
運行效果:
=============================================================
代碼部分:
=============================================================
/UUUUU_Test/src/com/b510/jinzita/JinZiTa.java
1 /** 2 * 3 */ 4 package com.b510.jinzita; 5 6 /** 7 * 星星數<br> 8 * 根據事先規定的星星層數,按照(2*n-1)的方式輸出:第一層一個"*",第二層三個"*",第三層五個"*"....以此類推。<br> 9 * 對於星星的數量我們可以根據算法:(2*n-1)方式得到星星數量.<br> 10 * 其次就是每一層的空格數量啦:這個我們可以從最后一層來找規律...第n層有0個空格(即:n-n=0),第n-1層有1個空格(即:n-(n-1)=1),第n-2層有兩個空格(即:n-(n-2)=2)....<br> 11 * 所以空格數量我們可以通過方法:getBlanks(int length)獲取得到。 12 * 13 * @author hongten<br> 14 * @date 2013-3-10 15 */ 16 public class JinZiTa { 17 /** 層數 */ 18 public static final int LAYERS = 10; 19 /** 空格 */ 20 public static final String BLANK_1 = " "; 21 /** 星星 */ 22 public static final String START_1 = "*"; 23 24 public static void main(String[] args) { 25 showTa(LAYERS); 26 } 27 28 /** 29 * 輸出金字塔 30 * 31 * @param number 32 * 金字塔層數 33 */ 34 public static void showTa(int number) { 35 if (number >= 1) { 36 for (int i = 1; i <= number; i++) { 37 System.out.println(getBlanks(number - i) + getStars(2 * i - 1)); 38 } 39 } else { 40 System.out.println("你輸入的數[" + number + "]不在處理的范圍中,請輸入大於或等於1的數"); 41 } 42 } 43 44 /** 45 * 生成空格數 46 * 47 * @param length 48 * 空格的長度 49 * @return 50 */ 51 public static String getBlanks(int length) { 52 StringBuffer blanks = new StringBuffer(); 53 for (int i = 0; i < length; i++) { 54 blanks.append(BLANK_1); 55 } 56 return blanks.toString(); 57 } 58 59 /** 60 * 生成星星數 61 * 62 * @param length 63 * @return 64 */ 65 public static String getStars(int length) { 66 StringBuffer blanks = new StringBuffer(); 67 for (int i = 0; i < length; i++) { 68 blanks.append(START_1); 69 } 70 return blanks.toString(); 71 } 72 }
生成有鏤空的金字塔....
運行效果:
=============================================================
代碼部分:
=============================================================
/UUUUU_Test/src/com/b510/jinzita/JinZiTaBlank.java
1 /** 2 * 3 */ 4 package com.b510.jinzita; 5 6 /** 7 * 星星數<br> 8 * 根據事先規定的星星層數,按照(2*n-1)的方式輸出:第一層一個"*",第二層三個"*",第三層五個"*"....以此類推。<br> 9 * 對於星星的數量我們可以根據算法:(2*n-1)方式得到星星數量.<br> 10 * 其次就是每一層的空格數量啦:這個我們可以從最后一層來找規律...第n層有0個空格(即:n-n=0),第n-1層有1個空格(即:n-(n-1)=1),第n-2層有兩個空格(即:n-(n-2)=2)....<br> 11 * 所以空格數量我們可以通過方法:getBlanks(int length)獲取得到。 12 * 13 * @author hongten<br> 14 * @date 2013-3-10 15 */ 16 public class JinZiTaBlank { 17 /** 層數 */ 18 public static final int LAYERS = 10; 19 /** 空格 */ 20 public static final String BLANK_1 = " "; 21 /** 星星 */ 22 public static final String START_1 = "*"; 23 24 public static void main(String[] args) { 25 showTa(LAYERS); 26 } 27 28 /** 29 * 輸出金字塔 30 * 31 * @param number 32 * 金字塔層數 33 */ 34 public static void showTa(int number) { 35 if(number >= 1){ 36 for (int i = 1; i <= number; i++) { 37 if(i==number){ 38 System.out.println(getBlanks(number - i) + getStars(2 * i - 1)); 39 }else{ 40 System.out.println(getBlanks(number - i) + getBlankStars(2 * i - 1)); 41 } 42 } 43 }else{ 44 System.out.println("你輸入的數["+number+"]不在處理的范圍中,請輸入大於或等於1的數"); 45 } 46 } 47 48 /** 49 * 生成空格數 50 * 51 * @param length 52 * 空格的長度 53 * @return 54 */ 55 public static String getBlanks(int length) { 56 StringBuffer blanks = new StringBuffer(); 57 for (int i = 0; i < length; i++) { 58 blanks.append(BLANK_1); 59 } 60 return blanks.toString(); 61 } 62 63 /** 64 * 生成含有空格的星星數 65 * 66 * @param length 67 * @return 68 */ 69 public static String getBlankStars(int length) { 70 StringBuffer blanks = new StringBuffer(); 71 for (int i = 0; i < length; i++) { 72 if (i == 0 || i == length - 1) { 73 blanks.append(START_1); 74 } else { 75 blanks.append(BLANK_1); 76 } 77 } 78 return blanks.toString(); 79 } 80 81 82 /** 83 * 生成星星數 84 * 85 * @param length 86 * @return 87 */ 88 public static String getStars(int length) { 89 StringBuffer blanks = new StringBuffer(); 90 for (int i = 0; i < length; i++) { 91 blanks.append(START_1); 92 } 93 return blanks.toString(); 94 } 95 }
如果大家有更好的方法,可以一起探討....
I'm Hongten