zl程序教程

您现在的位置是:首页 >  其他

当前栏目

每日一题---用‘*‘打印出边长为n的空心六边形

2023-03-14 22:40:17 时间

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

运行结果为:

image