内容正文:
6.2 二维数组
company profile
在实际应用中,一维数组的维数经常不够用。例如,某公司有 10 名员工,每名员工的工资包含基本工资、绩效工资、奖金等多项,转换成计算机数据后会涉及多个维度,这样的数组属于多维数组,而有两个维度的数组称作二维数组。二维数组中的元素可以看作由行和列排列成的矩阵。二维数组的下标有两个,即行标和列标,仍然从 0 开使。
6.2.1 二维数组的声明
二维数组的声明与一维数组类似,只是要有两个方括号,格式如下:
(1)数组元素类型 数组名称 [][]
(2)数组元素类型 [][] 数组名称
例如:
double b[][]; 或 double[][] b;
company profile
6.2.2 二维数组的初始化
1. 使用 new 关键字初始化二维数组
使用 new 关键字初始化二维数组只是为数组指定了行数和列数,从而为数组分配存储空间,并不是为数组元素赋初值。用 new 关键字初始化二维数组有两种方式:一是先声明数组再初始化;二是在声明数组的同时进行初始化。
(1)先声明再初始化。
先声明数组再初始化,需要使用两条语句:第一条语句用来声明数组,第二条语句
用 new 关键字初始化数组。
用 new 关键字初始化数组的格式如下:
数组名 =new 数组元素类型 [ 行数 ][ 列数 ]
例如:
int a[][];
a=new int[4][3];
company profile
(2)声明的同时初始化。
在声明的同时对数组进行初始化,也就是将声明和用new关键字初始化合为一步。格式如下:
数组元素类型 数组名[][]=new 数组元素类型[行数][列数]
或
数组元素类型[][] 数组名=new 数组元素类型[行数][列数]
例如:
int a[][]=new int[3][4];
company profile
2.赋初值初始化二维数组
可以在声明二维数组的同时为数组元素赋初值,通过赋初值的组数和每组的个数确定二维数组的行数和每行元素的个数。格式如下:
数组元素类型 数组名[][]={{初值列表},{初值列表},…,{初值列表}}
各个初值列表之间用逗号分隔,例如:
int a[][]={{2,5,8,6},{8,4,5,8},{6,2,2,5}};
该条语句声明了一个二维数组a,里面共有12个元素,具体如下:
a[0][0]=2 a[0][1]=5 a[0][2]=8 a[0][3]=6
a[1][0]=8 a[1][1]=4 a[1][2]=5 a[1][3]=8
a[2][0]=6 a[2][1]=2 a[2][2]=2 a[2][3]=5
从赋值表中可以确定该数组是三行四列,所以a[][]中的数值可以省略。
public class TDArray{
public static void main(String[] args){
int i=0,j=0;
int td[][]={{1,2,3},{4,5,6},{7,8,9}};
for(i=0;i<10;i++){
for(j=0;j<3;j++){
System.out.print(″td[″+i+″][ ″+j+″]= ″+td[i][j]+ ″ ″);
}
System.out.println();
}
}
}
【实例2】二维数组的建立与输出。
company profile
td[0][0]=1 td[0][1]=2 td[0][2]=3
td[1][0]=4 td[1][1]=5 td[1][2]=6
td[2][0]=7 td[2][1]=8 td[2][2]=9
【运行结果:】
company profile
实训分析:
建立一个能够存放5个数字的数组,将输入数字的每位数的值赋值到数组元素中,对输入的数字从个位开始获取,并且每获取一次之后都用10整除,这样就能分别获取十位、百位、千位了,最后将数字输出即可。
【实训 1】 求一个正整数的位数并逆序输出各位数字。
company profile
给定一个5位(含)以下的正整数,求出它是几位数并逆序输出各位数字。
public class nxDemo{
public static void main(String[] args){
System.out.println(" 请输入一个不大于 5 位数的正整数:");
Scanner scanner=new Scanner(System.in);
int num=scanner.nextInt(); // 获取输入
int[] a=new int[5]; // 创建 5 位数的数组
int i=0; // 循环取位
do{
a[i]=num%10;
num=num/10;
i++;
}while