以下为代码 :
原理都写在注释里了
ps: 写程序主要是要多独立思考~
public class Test {
public static void main(String[] args) {
println(9);
}
/**
* 打印菱形
*
* @param length 菱形的边长
*/
public static void println(int length) {
//打印菱形
for (int i = 0; i < length; i++) {
//我们很容易知道 第一行的和最后一行 实心方块在 中间位置 也就是 length/2 的位置
// 而往下走 位置向两边扩散一格
// left 和 right 两个变量表示 在 第i 行时 黑块出现的 两个位置(如果在第一行 和最后一行 left 和 right 是相同的)
int left = (length / 2 + i);
int right = (length / 2 - i);
// 走过中间之后 位置往内聚拢一格
if (i > length / 2) {
left = length / 2 + (length - i - 1);
right = (length / 2 - (length - i - 1));
}
for (int j = 0; j < length; j++) {
//在这里判断 应该打印实心方块还是空心方块
if (j == left || j == right) {
System.out.print("◆");
} else {
System.out.print("□");
}
}
System.out.println();
}
}
}
效果图: 9个菱形