问题分析:
当要输出不规则图形是,可以对图形进行切割,在进行分析有何共同点,把共同点提炼起来,再根据共同点对代码进行优化。
实心菱形:可以分为上下两个三角形
空心菱形:可以分为内外两个菱形(内部的菱形是由空字符组合成的)
public class Demo1 {
public static void main(String[] args) {
// *
// ***
//*****
// ***
// *
for(int i=1;i<=5;i++){
for(int j=0;j<Math.abs(3-i);j++) //公式Math.abs(3-i)代表菱形左边的空白字符个数与行数的关系
System.out.print(" ");
for(int k=0;k<(5-2*Math.abs(3-i));k++) //5-2*Math.abs(3-i)代表*的个数与行数的关系
System.out.print("*");
System.out.println(); //每输入一行进行换行
}
// *
// * *
//* *
// * *
// *
for(int i=1;i<=5;i++){
for(int j=0;j<Math.abs(3-i);j++)
System.out.print(" ");
System.out.print("*");
// *
// *
//* 先输出该图形
// *
// *
if(i>=2&&i<=4){//菱形中间2-4行的空心菱形for(int k=0;k<3-2*Math.abs(3-i);k++){System.out.print(" ");}System.out.print("*");//补全右半部分的菱形}System.out.println();}}}