在一个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