分析:可以将上面的图形分成两个部分,一部分为朝上的等腰三角形,一部分为朝下的等腰三角形,分成两个部分最后一拼接即为所求菱形
开始:
第一部分:朝上的等腰三角形
我们将上面5层拿出来当做朝上等腰三角形,即:
//上面5行
for (int i = 1; i <= 5; i++) {
}
外层代码用此代码控制行数
其次我们会发现等腰三角形是空白部分和*所构成,所以我们分为两小步实现,第一步打印其空白部分,即:
//i=1,空格=4
//i=2,空格=3
//i=3,空格=2
for (int j = 1; j <= 5 - i; j++) {
System.out.print(" ");
}
将其写入外层for循环内部,空白部分填充完毕后填充*部分,即:
//i=1,*=1
//i=2,*=3
//i=3,*=5
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("*");
}
记得在最后加上System.out.println();换行;
此部分代码也在外层for循环内,在空白部分循环后面,这样就实现了菱形的上半部分,打印在控制平台显示为:
*
***
*****
*******
*********
第二部分:朝下的等腰三角形
按照上面的思路,继续分析菱形的下半部分,同理
我们将下面4层拿出来当做朝下等腰三角形,即:
//下面4行
for (int i = 1; i <= 4; i++) {
}
同理外层代码用此代码控制行数
一样我们会发现等腰三角形是空白部分和*所构成,所以我们分为两小步实现,第一步打印其空白部分,即:
//i=1,空格=1
//i=2,空格=2
//i=3,空格=3
for (int j = 1; j <= i; j++) {
System.out.print(" ");
}
将其写入外层for循环内部,空白部分填充完毕后填充*部分,即:
//i=1,*=7
//i=2,*=5
//i=3,*=3
for (int j = 1; j <= (5 - i) * 2 - 1; j++) {
System.out.print("*");
}
记得在最后加上System.out.println();换行;
此部分代码也在外层for循环内,在空白部分循环后面,这样就实现了菱形的下半部分,打印在控制平台显示为:
*******
*****
***
*
我们将其合并,最终代码为:
public class 菱形 {
public static void main(String[] args) {
//上面5行
for (int i = 1; i <= 5; i++) {
//i=1,空格=4
//i=2,空格=3
//i=3,空格=2
for (int j = 1; j <= 5 - i; j++) {
System.out.print(" ");
}
//i=1,*=1
//i=2,*=3
//i=3,*=5
for (int j = 1; j <= 2 * i - 1; j++) {
System.out.print("*");
}
System.out.println();
}
//下面4行
for (int i = 1; i <= 4; i++) {
//i=1,空格=1
//i=2,空格=2
//i=3,空格=3
for (int j = 1; j <= i; j++) {
System.out.print(" ");
}
//i=1,*=7
//i=2,*=5
//i=3,*=3
for (int j = 1; j <= (5 - i) * 2 - 1; j++) {
System.out.print("*");
}
System.out.println();
}
}
在控制台表现为:
*
***
*****
*******
*********
*******
*****
***
*
实现菱形,此题让初学者学会分步思考,一步步完成问题,学会分析后做题,加油!