【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、数组下标越界问题

 

 
 
 
 
 
 
 
 
 
 
 
 

原文地址:https://www.cnblogs.com/haifeima/p/12653571.html