import java.util.Scanner;
public class Shape {
public static void main(String[] args) {
int height = 0;
Scanner in = new Scanner(System.in);
System.out.println("请输入高度(为奇数)");
height = in.nextInt();
diamond(height);
System.out.println("---------分割线--------");
hourglass(height);
}
public static void diamond(int height) {
if(height == 1) {
System.out.println("*");
return;
}
if(height%2 == 0) {
System.out.println("请输入奇数");
return;
}
for(int i=1;i<=height;i++) {
// 空白统计(关键部分)
int white = (height+1)/2 - i;
if(white<0) {
white = -white;
}
for(int j=1;j<=white;j++) {
System.out.print(" ");
}
int star = height - 2*white;
for(int j=1;j<=star;j++) {
System.out.print("*");
}
for(int j=1;j<=white;j++) {
System.out.print(" ");
}
System.out.println();
}
return;
}
public static void hourglass(int height) {
if(height == 1) {
System.out.println("*");
return;
}
if(height%2 == 0) {
System.out.println("请输入奇数");
return;
}
for(int i=1;i<=height;i++) {
int star = (height+1)/2 - i;
if(star<0) {
star = -star;
}
// 统计星星数这部分与菱形空白统计进行联想(关键部分)
star = star*2+1;
int white = (height - star)/2;
for(int j=1;j<=white;j++) {
System.out.print(" ");
}
for(int j=1;j<=star;j++) {
System.out.print("*");
}
for(int j=1;j<=white;j++) {
System.out.print(" ");
}
System.out.println();
}
return;
}
}
`
以上代码是错误的解法
正确代码呈上来
@Test
public void print_ling() {
int height = in.nextInt();
for(int i=1;i<=height;i++) {
int j=0;
for(;j<Math.abs(-i+4);j++) {
System.out.print(" ");
}
for(int k=1;k<=(height-2*j);k++) {
System.out.print("*");
}
System.out.println();
}
}
@Test
public void print_lingd() {
int height = in.nextInt();
int half = height/2;
for(int i=1;i<=height;i++) {
int j=0;
for(;j<half-Math.abs(i-4);j++) {
System.out.print(" ");
}
for(int k=1;k<=(height-2*j);k++) {
System.out.print("*");
}
System.out.println();
}
}