• 【7】Java数组之二维数组


    一、二维数组的声明

    (三种形式)[]中括号可以放在不同的地方
    int[][] intArray;//数据类型[][]数组名 
    float floatArray[][];//数据类型 数组名[][]
    double[] doubleArray[];//数组类型[]数组名[]

     二、 二维数组创建的两种方法

    1、直接指定行数和列数
    char ch = new char[3][4]; //创建一个3行4列的二维char类型数组,初始化为null。

     2、只指定行数,不指定列数

    float[][] floatArray = new float[3][];
    //这时的二维数组每行相当于一个一位数组,需要再次手动创建每列。
    //若没有创建列就进行访问会抛出空指针异常
    
    floatArray[0] =new float[3]; //第一行有3列
    floatArray[1] =new float[4]; //第二行有4列
    floatArray[2] =new float[5]; //第三行有5列

     三、代码举例

    package com.fiona.javaBasis.day7array_2;
    
    public class _02arrayDemo {
    
        public static void main(String[] args) {
            //二维数组的声明
            //三种形式
            //声明int类型的二维数组
            int[][] intArray;
            //声明float类型的二维数组
            float floatArray[][];
            //声明double类型的二维数组
            double[] doubleArry[];
            //创建一个三行三列的int类型的数组
            intArray= new int[3][3];
            System.out.println("intArray数组的第三行第二列的元素为:"+intArray[2][1]);
            //为第2行第3个元素赋值为9
            intArray[1][2]=9;
            System.out.println("intArray数组第2行第3列的元素为:"+intArray[1][2]);
            //声明数组的同时进行创建
            char[][] ch=new char[3][5];
            //创建float类型的数组时,只指定行数
            //只指定行数不指定列数是正确的,什么都不写或者只指定列数不指定行数是错误的。
            floatArray=new float[3][];
    
            //二维数组的每行相当于一个一维数组,需要创建
            floatArray[0]=new float[3];//第一行有三列
            floatArray[1]=new float[4];//第二行有四列
            floatArray[2]=new float[5];//第三行有五列
            System.out.println(floatArray[0][0]);//创建完成后,才能输出
            //System.out.println(floatArray[0][3]);数组下标越界
        }
    
        
    //intArray数组的第三行第二列的元素为:0
    //intArray数组第2行第3列的元素为:9
    //0.0
    }
    View Code

    四、二维数组的初始化

    1、 二维数组的初始化

    int[][] a={{1,2,3},{4,5,6},{7,8,9}}; //即为声明并初始化一个int类型的三行三列的数组。
     
    int[][] a={{1,2,3},{4,5,6},{7,8,9}}; //即为声明并初始化一个int类型的三行三列的数组。
    行数:num.length;
    列数:num[0].length;(表示第一行的列数)

    五、案例

    1、循环输出二维数组:外层循环控制行数,内层循环控制每行的列数
    package com.fiona.javaBasis.day7array_2;
    //二维数组的输出
    public class _02arrayDemo {
        public static void main(String[] args) {
            int[][] a={{1,2,3},{4,5,6},{7,8,9}};
            for (int i=0;i<a.length;i++){
                for (int j=0;j<a[i].length;j++){
                    System.out.print(a[i][j]+"  ");
                }
                System.out.println();
            }
        }
    }
    //1  2  3
    //4  5  6
    //7  8  9  
    View Code

    2、打印每一科目的平均分和总分(感觉有点难)

    方法1:

    package com.fiona.javaBasis.day7array_2;
    /*在一个二维数组中存放了三名学生的语文和数学的成绩,
    从键盘输入三名学生的成绩存储到二维数组中,
    分别求语文和数学的总成绩及平均分并输出。
    运行效果如下:
    请输入第1个学生的语文成绩:
    80
    请输入第1个学生的数学成绩:
    90
    请输入第2个学生的语文成绩:
    70
    请输入第2个学生的数学成绩:
    20
    请输入第3个学生的语文成绩:
    50
    请输入第3个学生的数学成绩:
    70
    语文的总共成绩为:200
    语文的平均成绩为:66
    数学的总共成绩为:180
    数学的平均成绩为:60
    */
    import java.util.Scanner;
    
    public class _04arrayDemo_1 {
        public static void main(String[] args){
            //定义一个三行两列的整型二维数组intArray
            int intArray[][]=new int[3][2];
            //从键盘输入学生成绩,要求输入顺序与效果图一致
            Scanner sc=new Scanner(System.in);
            for(int i=0;i<intArray.length;i++){
                for(int j=0;j<intArray[i].length;j++){
                    System.out.println("请输入第"+(i+1)+"个学生的语文成绩:");
                    intArray[i][j]=sc.nextInt();
                    System.out.println("请输入第"+(i+1)+"个学生的数学成绩:");
                    intArray[i][j+1]=sc.nextInt();
                    break;
                }
            }
    
            //求语文的总成绩和平均分
            int p=intArray[0][0]+intArray[1][0]+intArray[2][0];
            int p1=p/intArray.length;
            System.out.println("语文的总共成绩为:"+p);
            System.out.println("语文的平均成绩为:"+p1);
            //求数学的总成绩和平均分
            int q=(intArray[0][1]+intArray[1][1]+intArray[2][1]);
            int q1=q/intArray.length;
            System.out.println("数学的总共成绩为:"+q);
            System.out.println("数学的平均成绩为:"+q1);
    
        }
    }
    View Code 

    方法2:

    package com.fiona.javaBasis.day7array_2;
    /*在一个二维数组中存放了三名学生的语文和数学的成绩,
    从键盘输入三名学生的成绩存储到二维数组中,
    分别求语文和数学的总成绩及平均分并输出。
    运行效果如下:
    请输入第1个学生的语文成绩:
    80
    请输入第1个学生的数学成绩:
    90
    请输入第2个学生的语文成绩:
    70
    请输入第2个学生的数学成绩:
    20
    请输入第3个学生的语文成绩:
    50
    请输入第3个学生的数学成绩:
    70
    语文的总共成绩为:200
    语文的平均成绩为:66
    数学的总共成绩为:180
    数学的平均成绩为:60
    */
    import java.util.Scanner;
    
    public class _03arrayDemo_2 {
    
        public static void main(String[] args) {
    
            int[][] intArray =new int[3][2];
    
    
    //从键盘输入学生成绩,要求输入顺序与效果图一致
            Scanner sc=new Scanner(System.in);
            for(int i=0;i<intArray.length;i++){
                for(int j=0;j<intArray[i].length;j++){
    //使用switch语句判断学科,并输入成绩
                    switch(j) {
                        case 0:
                            System.out.println("请输入第"+(i+1)+"个学生的语文成绩:");break;
                        case 1:
                            System.out.println("请输入第"+(i+1)+"个学生的数学成绩:");break;
                    }
                    intArray[i][j]=sc.nextInt();
    
                }
            }
    //输出输入的成绩,测试数据是否录入
            for(int[] n:intArray){
                for(int k:n)
                    System.out.print(k+" ");
            }
            System.out.println();
            int sum1 = 0,sum2=0,pjf1=0,pjf2=0;
    //求和
            for(int i=0;i<intArray.length;i++) {
                for(int j=0;j<intArray[i].length;j++) {
                    switch(j) {
                        case 0:
                            sum1=sum1+intArray[i][j];break;
                        case 1:
                            sum2=sum2+intArray[i][j];break;
                    }
                }
            }
    //求平均值和输出
            pjf1=sum1/(intArray.length);
            pjf2=sum2/(intArray.length);
            System.out.println("语文的总成绩为"+sum1);
            System.out.println("语文的平均分为"+pjf1);
            System.out.println("数学的总成绩为"+sum2);
            System.out.println("数学的总成绩为"+pjf2);
    
        }
    }
    View Code

    六、总结

    一维数组
    声明,创建,初始化,元素的引用,长度,数组的应用
     
    二维数组
    是特殊的一维数组 注意!:
    1、数组是引用数组数据类型
    2、创建数组时,会开辟连续的内存空间
    3、数组长度使用length属性获取
    4、数组元素的下标从0开始
    5、数组下标越界问题

     

     
     
     
     
     
     
     
     
     
     
     
     

  • 相关阅读:
    【ArcGIS 10.2新特性】ArcGIS 10.2 for Desktop 新特性(二)
    手势(Gesture)的增加和识别
    [转]C#自定义开关按钮控件--附带第一个私活项目截图
    当年的试用期周工作心得
    FREESWITCH SEESION
    基于三星ARM9(S3C2410)的交通违章抓拍系统的开发
    Apache Kafka: Next Generation Distributed Messaging System---reference
    How and Why Unsafe is Used in Java---reference
    基于keepalived对redis做高可用配置---转载
    Java获取真实的IP地址--转载
  • 原文地址:https://www.cnblogs.com/haifeima/p/12653571.html
Copyright © 2020-2023  润新知