用’*'打印出边长为n的空心六边形
/**
*打印六边形要分上下两个部分分别进行
*多用循环和判断语句
*并要整清楚每个循环和判断是干什么的
*我将对上部的循环和判断的作用进行分析,下部与其类似
**/
import java.util.Scanner;
public class Test06 {
public static void main(String[] args) {
System.out.println("请定义六边形的边长:");
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
for(int i=0;i<n;i++) {
for(int j=0;j<n-i;j++) {
System.out.print(" ");
}
//既然要打印图形,则需要在每一行多余的地方用空格填补
for(int l=0;l<2*n+2*i;l++) {
if(i==0) {
if(l<n+2*i) {
System.out.print("* ");
}
}
else {
if(l==0) {
System.out.print("*");
}
else if(l>0&&l<(2*n+2*i-2)){
System.out.print(" ");
}
else if(l==(2*n+2*i-2)) {
System.out.print("*");
}
//这个语句块是为了将'*'按照一定规律打印出来
}
}
System.out.println();
} //上半部分结束
for(int i=n-2;i>=0;i--) {
//因为上半部分已经把上下部分中间共用的行中的'*'打印出来了,所以这里的for循环只循环了n-1次
for(int j=0;j<n-i;j++) {
System.out.print(" ");
}
for(int l=0;l<2*n+2*i;l++) {
if(i==0) {
if(l<n+2*i) {
System.out.print("* ");
}
}
else {
if(l==0) {
System.out.print("*");
}
else if(l>0&&l<2*n+2*i-2){
System.out.print(" ");
}
if(l==2*n+2*i-2) {
System.out.print("*");
}
}
}
System.out.println();
}
}
}
运行结果为: