Java数组小练习

Java.二维数组练习 制作n环"回"字型矩阵

感觉自己去发现探索一个规律还是很难的,找规律和实现总是碰壁,还好经过了多次修改,总算是实现了😊😊
代码:

package com.shujua;
/*

输入一个数字,输出该数值阶数的回字型矩阵
如:输入1,输出‘口’字型矩阵;输入2,输出‘回’字型矩阵,以此类推。

规律:环的四个边;横着的边i坐标相同且都是偶数,竖着的边j坐标相同都是偶数(i表示横坐标,j表示纵坐标)
 空白处;横向,纵向,同上对应的都是奇数
  对于y=4x-1阶数组来讲,环数为x;数组的下标范围是(0,y-1)
  下标中的偶数(和0)有0,2,4---y-1;奇数为1,3---y-2
  当下标为0或者最大值时,必是’*‘。
  每多一环,就多两了个if语句;多出来的if语句相比于x-1环条件也多两个
 */

import java.util.Scanner;

public class ee {
    public static void main(String[] args) {
        System.out.println();
        Scanner sc= new Scanner(System.in);
        System.out.println("请输入环数");
        int x=sc.nextInt();
        int y=4*x-1;//x为环数,y为行数列数,y-1为最大下标值
        char[][] hh=new char[y][y];
        for(int i=0;i<y;i++){
            for(int j=0;j<y;j++){  //这两个循环是遍历矩阵所有的点

                boolean qq=true;
                boolean ee=true;
                boolean aa,bb;
                for(int m=1;m<=x;m++) {
                    if(m!=1){//1是特例,不做处理
                        qq=qq&(j!=2*m-3)&(j!=y-2*m+2);//1 -2   3 -4
                        ee=ee&(i!=2*m-3)&(i!=y-2*m+2);
                    }
                    aa=((i==2*m-2)|(i==y-2*m+1));
                    bb=((j==2*m-2)|(j==y-2*m+1));
                    if(aa&qq){
                        hh[i][j]='*';
                    }
                    if(bb&ee){
                        hh[i][j]='*';
                    }
                }
                if(hh[i][j]!='*'){
                    hh[i][j]=' ';
                }

                /*

                首先,对于n环,最大下标y-1
                遍历n即可实现if条件1:
                n=1 aa=i==0|i==y-1
                n=2 aa=i==2|i==y-3
                n   aa=i==2(n-1)|i==y-2n+1
                if条件2
                n=2  qq=j!=1&j!=y-2  有一组
                n=3  qq=j!=1&j!=y-2&j!=3&j!=y-4 有两组
                n    qq=qq&j!=2(n-1)-1&j!=y-2(n-1) 即qq=qq&(j!=2n-3)&(j!=y-2n+2)

                if条件组合表示为:zz=(i==2(n-1)|i==y-2n-1)&qq&(j!=2n-3)&(j!=y-2n+2) qq初值为true
                                  xx=(j==2(n-1)|j==y-2n-1)&ee&(i!=2n-3)&(i!=y-2n+2) ee初值为true


                 */
                //下面这个代码是仅控制3环以内的代码,用于发现规律

//                if(i==0|j==0|i==(y-1)|j==(y-1)){
//                    hh[i][j]='*';
//
//                }else if((i==2|i==y-3)&(j!=1&j!=y-2)){
//                    hh[i][j]='*';
//
//                }else if((j==2|j==y-3)&(i!=1&i!=y-2)){
//                    hh[i][j]='*';
//                }else if((i==4|i==y-5)&(j!=3&j!=y-4)&(j!=1&j!=y-2)){
//                    hh[i][j]='*';
//
//                }else if((j==4|j==y-5)&(i!=3&i!=y-4)&(i!=1&i!=y-2)){
//                    hh[i][j]='*';
//                }else if((j==6|j==y-7)&(i!=5&i!=y-6)&(i!=3)&(i!=y-4)&(i!=1&i!=y-2)){
//                    hh[i][j]='*';
//                }else if((i==6|i==y-7)&(j!=5&j!=y-6)&(j!=3)&(j!=y-4)&(j!=1&j!=y-2)) {
//                    hh[i][j] = '*';
//                }
//                else {
//                    hh[i][j]=' ';
//                }


            }
        }
        for(int i=0;i<y;i++){
            for(int j=0;j<y;j++){
                System.out.print(hh[i][j]+" ");
            }
            System.out.println();
        }

    }

}

结果展示:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值