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