简单的菱形算法:
public static void lingShape02() {
for(int i=1; i<=5; i++) { //5行
for(int j=1; j<=5-i; j++) { //空格:5-i个
System.out.print(" ");
}
for(int k=1; k<=2*i-1; k++) { //星号:2*i-1
if(k==1 || k==2*i-1) {
System.out.print("*");
}else {
System.out.print(" ");
}
}
System.out.println(); //换行
}
for(int i=1; i<5; i++) { //行数4
for(int j=1; j<=i; j++) { //空格:随着行数的增加而增加
System.out.print(" ");
}
for(int k=1; k<=9-2*i; k++) { //星号:随着行数增加,星号从总星数减去2*i-1
if(k==1 || k==9-2*i) {
System.out.print("*");
}else {
System.out.print(" ");
}
}
System.out.println();
}
}
略为复杂的菱形算法:
public static void lingShape(int row) {
if(row % 2 == 0) { //偶数行
row++;
}
int binRow = row/2; //一半的行数
//上半部分
for(int i=1; i<=binRow+1; i++) { //上半部分row行数一半需要加1
for(int j=1; j<=binRow+1-i; j++) { //空格:一半行数加1(binRow)减去行数(i)
System.out.print(" ");
}
for(int k=1; k<=2*i-1; k++) { //星号:与行数相关(2*i+1)
System.out.print("*");
}
System.out.println();
}
//下半部分
for(int i=1; i<=binRow; i++) { //row行数一半
for(int j=1; j<=i; j++) { //空格:与行数相关,多少行就多少空格
System.out.print(" ");
}
for(int k=1; k<=row-2*i; k++) { //总行数减去2倍行数
System.out.print("*");
}
System.out.println();
}
}
```