一、打印效果
二、实现代码汇总
为了方便初学者对代码的理解,建议熟练t1到t5为各种三角的打印,然后再进行菱形的打印实现。
1 package circulationDemo;
2
3 import java.util.Scanner;
4
5 public class Test {
6 public static void main(String[] args) {
7 Scanner input = new Scanner(System.in);
8 System.out.println("请输入要打印的行数:");
9 int num = input.nextInt();
10 t1(num);// 正直角
11 split();
12 t2(num);// 倒直角
13 split();
14 t3(num);// 等腰三角
15 split();
16 t4(num);// 等腰倒三角++
17 split();
18 t5(num);// 等腰倒三角--
19 split();
20 t6(num);// 实心菱形
21 split();
22 t7(num);// 空心菱形(1)
23 split();
24 t8(num);// 空心菱形(2)
25 split();
26 t9(num);// 空心菱形(3)
27 }
28
29 private static void t9(int num) {
30 for (int k = 1; k <= num; k++) {
31 for (int i = 1; i <= (num - k); i++) {
32 System.out.print(" ");
33 }
34 System.out.print("*");
35 for (int i = 1; i <= ((k - 2) * 2 + 1); i++) {
36 System.out.print(" ");
37 }
38 if (k != 1) {
39 System.out.print("*");
40 }
41 System.out.println();
42 }
43 for (int k = num-1; k >= 1; k--) {
44 for (int i = 1; i <= (num - k); i++) {
45 System.out.print(" ");
46 }
47 System.out.print("*");
48 for (int i = 1; i <= ((k - 2) * 2 + 1); i++) {
49 System.out.print(" ");
50 }
51 if (k != 1) {
52 System.out.print("*");
53 }
54 System.out.println();
55 }
56 }
57
58 private static void t8(int num) {
59 // 上半部分
60 for (int i = 1; i <= num; i++) {
61 // 打印上半部分空格
62 for (int j = 1; j <= num - i; j++) {
63 System.out.print(" ");
64 }
65 // 打印原本实心的*部分
66 for (int j = 1; j <= 2 * i - 1; j++) {
67 // 仅在一行的开头和末尾打印*
68 if (j == 1 || j == 2 * i - 1) {
69 System.out.print("*");
70 } else {
71 System.out.print(" ");
72 }
73 }
74 System.out.println();
75 }
76 // 下半部分
77 for (int i = 1; i <= num - 1; i++) {
78 for (int j = 1; j <= i; j++) {
79 System.out.print(" ");
80 }
81 for (int j = 1; j <= 2 * (num - i - 1) + 1; j++) {
82 if (j == 1 || j == 2 * (num - i - 1) + 1) {
83 System.out.print("*");
84 } else {
85 System.out.print(" ");
86 }
87 }
88 System.out.println();
89 }
90
91 }
92
93 private static void t7(int num) {
94 // 打印上半部分
95 for (int i = 1; i <= num; i++) {
96 // 打印空格
97 for (int j = 1; j <= (num - i); j++) {
98 System.out.print(" ");
99 }
100 // 打印*的个数
101 if (i == 1) {
102 System.out.print("*");
103 } else {
104 System.out.print("*");
105 // 打印菱形里的空格
106 for (int j = 1; j <= (2 * i - 3); j++) {
107 System.out.print(" ");
108 }
109 System.out.print("*");
110 }
111
112 System.out.println();
113 }
114 // 打印下半部分
115 for (int i = num - 1; i > 0; i--) {
116 // 打印空格
117 for (int j = 1; j <= (num - i); j++) {
118 System.out.print(" ");
119 }
120 // 打印*的个数
121 if (i == 1) {
122 System.out.print("*");
123 } else {
124 System.out.print("*");
125 // 打印菱形里的空格
126 for (int j = 1; j <= (2 * i - 3); j++) {
127 System.out.print(" ");
128 }
129 System.out.print("*");
130 }
131 System.out.println();
132 }
133 }
134
135 private static void t6(int num) {
136 // 上半部分
137 for (int i = 1; i <= num; i++) {
138 for (int j = 1; j <= num - i; j++) {
139 System.out.print(" ");
140 }
141 for (int j = 1; j <= 2 * i - 1; j++) {
142 System.out.print("*");
143 }
144 System.out.println();
145 }
146 // 下半部分
147 for (int i = 1; i <= num - 1; i++) {
148 for (int j = 1; j <= i; j++) {
149 System.out.print(" ");
150 }
151 for (int j = 1; j <= 2 * (num - 1 - i) + 1; j++) {
152 System.out.print("*");
153 }
154 System.out.println();
155 }
156 }
157
158 private static void t5(int num) {
159 for (int i = num; i > 0; i--) {
160 for (int j = 1; j <= num - i; j++) {
161 System.out.print(" ");
162 }
163 for (int j = 1; j <= 2 * i - 1; j++) {
164 System.out.print("*");
165 }
166 System.out.println();
167 }
168 }
169
170 private static void t4(int num) {
171 for (int i = 1; i <= num; i++) {
172 for (int j = 1; j <= i - 1; j++) {
173 System.out.print(" ");
174 }
175 for (int j = 1; j <= 2 * (num - i) + 1; j++) {
176 System.out.print("*");
177 }
178 System.out.println();
179 }
180 }
181
182 private static void t3(int num) {
183 for (int i = 1; i <= num; i++) {
184 for (int j = 1; j <= num - i; j++) {
185 System.out.print(" ");
186 }
187 for (int j = 1; j <= 2 * i - 1; j++) {
188 System.out.print("*");
189 }
190 System.out.println();
191 }
192 }
193
194 private static void split() {
195 System.out.println("---------------");
196 }
197
198 private static void t2(int num) {
199 for (int i = 1; i <= num; i++) {
200 for (int j = 1; j <= num - i + 1; j++) {
201 System.out.print("*");
202 }
203 System.out.println();
204 }
205 }
206
207 private static void t1(int num) {
208 for (int i = 1; i <= num; i++) {
209 for (int j = 1; j <= i; j++) {
210 System.out.print("*");
211 }
212 System.out.println();
213 }
214 }
215
216 }