思路
方法一:将菱形的打印分解为打印每一行,再分解为打印两个的行和一个的行,在分解为打印空格和打印即可。
方法二:利用的对称性,如果只有一个*号则记两次,则每行星号之和是一个固定的值。
方法一代码
public class Test02 {
public static void main(String[] args) {
for(int i = 0; i < 3; i++)
System.out.print(" ");
System.out.println("*");
for(int i = 3; i > 0; i--) {
for (int j = 1; j < i; j++)
System.out.print(" ");
System.out.print("*");
for(int k = (4-i)*2-1; k > 0; k--)
System.out.print(" ");
System.out.println("*");
}
for(int i = 1; i < 3; i++) {
for(int j = 0; j < i; j++)
System.out.print(" ");
System.out.print("*");
for(int k = (3-i)*2-1; k > 0; k--)
System.out.print(" ");
System.out.println("*");
}
for(int i = 0; i < 3; i++)
System.out.print(" ");
System.out.println("*");
}
}
方法二代码
运行结果
*
* *
* *
* *
* *
* *
*
总结
第二种方法可以作为一个案例