用’*'打印出边长为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(); } } }
运行结果为: