在一个java交流群上面看到这样一个图片:
自己看了一下,觉得好玩儿,自己就动手写了一个
运行效果:
=============================================================
代码部分:
=============================================================
/UUUUU_Test/src/com/b510/jinzita/JinZiTa.java
1 /** 2 * 3 */ 4 package com.b510.jinzita; 5 6 /** 7 * 星星数 8 * 根据事先规定的星星层数,按照(2*n-1)的方式输出:第一层一个"*",第二层三个"*",第三层五个"*"....以此类推。 9 * 对于星星的数量我们可以根据算法:(2*n-1)方式得到星星数量.10 * 其次就是每一层的空格数量啦:这个我们可以从最后一层来找规律...第n层有0个空格(即:n-n=0),第n-1层有1个空格(即:n-(n-1)=1),第n-2层有两个空格(即:n-(n-2)=2)....11 * 所以空格数量我们可以通过方法:getBlanks(int length)获取得到。12 * 13 * @author hongten14 * @date 2013-3-1015 */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 number32 * 金字塔层数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 length48 * 空格的长度49 * @return50 */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 length63 * @return64 */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 * 星星数 8 * 根据事先规定的星星层数,按照(2*n-1)的方式输出:第一层一个"*",第二层三个"*",第三层五个"*"....以此类推。 9 * 对于星星的数量我们可以根据算法:(2*n-1)方式得到星星数量.10 * 其次就是每一层的空格数量啦:这个我们可以从最后一层来找规律...第n层有0个空格(即:n-n=0),第n-1层有1个空格(即:n-(n-1)=1),第n-2层有两个空格(即:n-(n-2)=2)....11 * 所以空格数量我们可以通过方法:getBlanks(int length)获取得到。12 * 13 * @author hongten14 * @date 2013-3-1015 */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 number32 * 金字塔层数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 length52 * 空格的长度53 * @return54 */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 length67 * @return68 */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 length86 * @return87 */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