zoukankan      html  css  js  c++  java
  • 【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、数组下标越界问题

     

     
     
     
     
     
     
     
     
     
     
     
     

  • 相关阅读:
    Linux Centos7之由Python2升级到Python3教程
    10张图带你深入理解Docker容器和镜像
    Centos7 添加用户及设置权限
    OpenCV 和 Dlib 人脸识别基础
    python unittest 源码学习
    Markdown 模板
    python Django ORM相关
    java的介绍
    java反射
    代理模式
  • 原文地址:https://www.cnblogs.com/haifeima/p/12653571.html
Copyright © 2011-2022 走看看