Java 定义二元数组 java二维数组元素个数

发布时间:2023-05-18 09:11:36

一、二维数组和多维数组1、定义二维数组:

在一维数组中定义每个元素也是一个数组元素,称为“二维数组”

多维数组是在一维数组上重新定义二维数组或三位数组。

int定义为一维数组 [] array={1,2,3}

//定义三个长度的二维数组,数组的每个元素都是一维数组int [][] arrays={},{};或者int [][] arrays=new int [3][2];///等号右侧左侧[]表示二维数组的长度,其中2可以省略,3不能省略//注意:等号左侧有几个[]表示几维

Java 定义二元数组 java二维数组元素个数_System

//1、定义二维数组int [][] array;///定义时给二维数组赋值 三个长度的二维数组中一维数组的长度不一定相等 [][] Array2={1,2,3},{4,5},{7,8}//定义时只指定大小,初始值int不给定 [][]array3]=new int[3][];/等价{},{};//赋值时 空指针异常,因为里面的一维数组是空的//定义三个长度的二维数组,元素长度为2int [][]array4[]=new int[3][2];//给元素赋值array4[0][0][0]=1;///输出二维数组中的所有元素for(int i=0;i<array4.length;i++){    //System.out.println(array4[i]);    for(int j=0;j<array4[i].length;j++){        System.out.println(array[i][j]);    }}

二、二维数组应用1、定义5*5矩阵,计算最大值和最小值

public class Test{    public static void main(String[] args) {        ///定义5*5的二维数组       int [][] array=new int[5][5];       //定义最大值,并初始化       int max=0;       ///定义最小值并初始化       int min=0;       ///将0-100的整数值赋予二维数组中的每个元素,并遍历输出二维数组        for (int i = 0; i <array.length ; i++) {            for (int j = 0; j <array[i].length ; j++) {                array[i][j]=(int)(Math.random()*100);                System.out.print(array[i][j]+"\t");            }            System.out.println();//换行        }        ///将数组中的第一个元素赋值max        max =array[0][0];        for (int i = 0; i <array.length ; i++) {            for (int j = 0; j <array[i].length ; j++) {                //如果数组中的元素大于max,将元素赋值给max                if(array[i][j]>=max){                    max=array[i][j];                }            }        }        ///输出二维数组中最大值        System.out.println(“最大值为:”+max);        ////给min赋值数组中的第一个元素        min =array[0][0];        for (int i = 0; i <array.length ; i++) {            for (int j = 0; j <array[i].length ; j++) {                //如果元素小于min,将元素赋值给min                if(array[i][j]<=min){                    min=array[i][j];                }            }        }        ///输出二维数组中最小值        System.out.println(“最小值为:”+min);    }}

2、五子棋游戏

public class Test{    ///定义字符串20*20的二维数组    static String [][] qipan=new String[20][20];    public static void main(String[] args) {        System.out.println(-五子棋游戏-;        ///初始化棋盘        for (int i = 0; i <qipan.length; i++) {            for (int j = 0; j <qipan[i].length; j++) {                qipan[i][j]="+";            }        }        printQipan();        System.out.println(“游戏开始:”);        Scanner sc=new Scanner(System.in);        while(true) {            System.out.println("请玩家(黑棋)落子:";            System.out.print(1-20)请输入棋子的行数:");            int num1 = sc.nextInt();            System.out.print(1-20)请输入棋子列数:");            int num2 = sc.nextInt();            if (num1 <= 0 || num1 > 20 || num2 <= 0 || num2 > 20 ) {                System.out.println(”落子超越棋盘边界,请重新落子!");                continue;            } else {                if( qipan[num1 - 1][num2 - 1] != "+"){                    System.out.println(“这个位置已经有棋子了,请重新落子!");                    continue;                }else{                    qipan[num1-1][num2-1]=⭕";                }            }            ///白棋落子            int row=0;            int col=0;//            System.out.println(在白棋思维中...");            while(true){                row=(int)(Math.random()*20);                col=(int)(Math.random()*20);                if(qipan[row][col]=="+"){                    break;                }            }            qipan[row][col]="●";            //打印棋盘            printQipan();            //判断输赢            if(judge()){                System.out.println(s+"赢了");                break;            }        }    }    //打印棋盘    public static void printQipan(){        for (int i = 0; i <qipan.length ; i++) {            for (int j = 0; j <qipan[i].length ; j++) {                System.out.print(qipan[i][j]+"\t");            }            System.out.println();        }    }    //判断输赢的方法    static String s="";    public static boolean judge(){        boolean flag=false;        for (int i = 0; i <qipan.length; i++) {            for (int j = 0; j <qipan[i].length ; j++) {                if(qipan[i][j]=="⭕|||qipan[i][j]=="●"){                    ///判断横向                    if(j<16&&                            qipan[i][j]==qipan[i][j+1]                            &&qipan[i][j]==qipan[i][j+2]                            &&qipan[i][j]==qipan[i][j+3]                            &&qipan[i][j]==qipan[i][j+4]){                        s=qipan[i][j];                        flag=true;                        break;                    }                    //判断右斜下                    else if(i<16&&j<16&&qipan[i][j]==qipan[i+1][j+1]                            &&qipan[i][j]==qipan[i+2][j+2]                            &&qipan[i][j]==qipan[i+3][j+3]                            &&qipan[i][j]==qipan[i+4][j+4]){                        s=qipan[i][j];                        flag=true;                        break;                    }                    ///判断纵向                    else if(i<16&&qipan[i][j]==qipan[i+1][j]                            &&qipan[i][j]==qipan[i+2][j]                            &&qipan[i][j]==qipan[i+3][j]                            &&qipan[i][j]==qipan[i+4][j]){                        s=qipan[i][j];                        flag=true;                        break;                    }                    //判断左斜下                    else if(i<16&&j>3&&qipan[i][j]==qipan[i-1][j-1]                            &&qipan[i][j]==qipan[i-2][j-2]                            &&qipan[i][j]==qipan[i-3][j-3]                            &&qipan[i][j]==qipan[i-4][j-4]){                        s=qipan[i][j];                        flag=true;                        break;                    }                }            }        }        return flag;    }}

扩展:使用二分法在数组中找到元素

public class Test {    public static void main(String[] args) {        // 1、指定20个长度的数组 随机数        int [] array=new int[20];        for (int i = 0; i <array.length; i++) {            array[i]=(int)(Math.random()*100);        }        /////输出数组中的每个元素        System.out.println("数组中的元素为:");        System.out.println(Arrays.toString(array));        //  2、排序 (升序)        Arrays.sort(array);        ////输出排序后的数组        System.out.println(排序后的数组为:");        System.out.println(Arrays.toString(array));        //  3、输入目标数        Scanner sc=new Scanner(System.in);        System.out.print(“请输入您想要找到的数字:”);        int num=sc.nextInt();        //  3、比较        //定义 最小值下标  最大值下标 中间值下标  目标下标进行搜索        /**         *  最小下标    0         *  *   最大下标   length-1         *  *         *  *  循环条件:  最小值小标<=最大值下标         *     中间下标:  middle = (最小值+最大值)/2         *  *   若中间值大于目标  说明 在左边  改变最大值下标 = 中间值下标-1         *  *   若中间值小于目标  说明 在右边   改变最小值小标 = 中间值下标+1         *  *   如果相等   break         *  *    一直这样比较 结束的条件是什么?         */        ///最小值小标        int minIndex=0;        ///最大值下标        int maxIndex=array.length-1;        ///中间值下标        int middle;        ///目标值下标        int index=-1;        //计数器        int count=0;        while(minIndex<=maxIndex){            count++;            middle=(minIndex+maxIndex)/2;            if(num<array[middle]){                maxIndex=middle-1;            }else if(num>array[middle]){                minIndex=middle+1;            }else {                index=middle;                break;            }        }        if(index!=-1){            System.out.println(目标已找到);            System.out.print("共查询次数:"+count+"\n");            System.out.print("目标数下标为:"+index);        }else{            System.out.println(目标不存在);        }    }}

本文是转载内容,我们尊重原作者对文章的权利。如有内容错误或侵权行为,请联系我们更正或删除文章。

上一篇 Java redis分布式锁 redis 分布式锁问题
下一篇 #yyds干货盘点# LeetCode程序员面试金典:相交链表

文章素材均来源于网络,如有侵权,请联系管理员删除。

标签: Java教程Java基础Java编程技巧面试题Java面试题