打印如下图形:
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
就是下图这种: 每一个和每一个星星之间有一个空格的,输入偶数层的话再次进行输入

可以输入层数,因为图案只有奇数次的层,所以只能输入奇数的层数
有更好的方法或者更简单的方法,可以评论下
代码如下:
import java.util.Scanner;
/*
打印如下图案:
*
* *
* * * *
* *
*
*/
public class Star {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
while (true) {
System.out.print("请输入奇数层数:");
// 要打印的层数
int layer_num = scanner.nextInt();
// 星星最多的一层的那一层的层数
int star_most_layer_num = (layer_num / 2) + 1;
// 星星最多的一层下面还剩下多少层
int layer_surplus = layer_num / 2;
//第一层空格数
int first_em = layer_num-2;
//第二层的空格数
int secord_em = layer_num-3;
// 星星最多的一层的星星个数
int star_most_count = layer_num - 1;
// 从第二层开始星星的个数
int star_start_num = 2;
// 从最多的一层开始倒数的层数的空格数
int invert_em = 2;
// 从最多的一层开始倒数的层数的星星数
int invert_star_num = layer_num-3;
if(layer_num%2!=0) {
// 先打印包括星星最多的一行的前几行
for(int i=1;i<=star_most_layer_num;i++) {
if(i==1) {
for(int j=1;j<=first_em;j++) {
System.out.print(" ");
}
System.out.println("*");
}
else if ((i>1 && i<star_most_layer_num)) {
for(int k=1;k<=secord_em;k++) {
System.out.print(" ");
}
for(int m=1;m<=star_start_num;m++) {
System.out.print("*");
System.out.print(" ");
}
star_start_num = star_start_num + 2;
secord_em = secord_em - 2;
System.out.println();
}
else if (i==star_most_layer_num){
for(int j=1;j<=star_most_count;j++) {
System.out.print("*");
System.out.print(" ");
}
System.out.println();
}
}
for(int i=1;i<=layer_surplus;i++) {
if(i!=layer_surplus) {
for(int m=1;m<=invert_em;m++) {
System.out.print(" ");
}
invert_em = invert_em + 2;
for(int k=1;k<=invert_star_num;k++) {
System.out.print("*");
System.out.print(" ");
}
invert_star_num = invert_star_num - 2;
System.out.println();
}
else {
for(int j=1;j<=first_em;j++) {
System.out.print(" ");
}
System.out.println("*");
}
}
break;
}
}
}
}
运行截图:

|