编写java程序应用for打印出实心菱形

编写java程序应用for打印出实心菱形

问题描述:

img


 public static void main(String[] args) throws Exception {
        char char0=' ';
        char char1='*';
        int c=6;
        int width=2*c-1;
        for(int i=1;i<c*2;i++){
            int m=0;
            if(i<c){
                m=i*2-1;
            }else{
                m=(2*c-i)*2-1;
            }
            int n=(width-m)/2;
            for(int j=1;j<=width;j++){
                if(j>n && j<=m+n){
                    System.out.print(char1);
                }else {
                    System.out.print(char0);
                }
            }
            System.out.println();
        }
    }

img

把它补成一个长方形,里面是菱形,如下图

img


可以分部分求,先求上半部分的1和2,因为循环次数是相同的,有两层循环,外层循环是行数,内层循环分部分循环,第一部分循环每一行的空格数,第二部分循环*的个数,下半部分类似,重点就是找到循环的次数和结束点。

打印思路,设置菱形宽是n,上半层循环从1~n,先打印n/2-i的空格,再打印i个空格
下半层打印反转