定义二维数组
二维数组,顾名思义,就是具有两个维度的数组。我们之前学习的一维数组中,数组中的元素只有唯一一个序号index来表示它的位置。而在二维数组中,有了行和列的区别。只有知道了行和列,才可以确定一个元素的位置。因此,二维数组经常用来代表矩阵等数据结构。大家也可以用数学中学习的矩阵和二维数组进行类比,在脑中形象化这一对象。
了解了什么是二维数组后,我们就来尝试定义一个新的二维数组。如下代码可以创建一个空的二维数组:
E[][] name = new E[a][b];
其中,E是类型名,a、b是数组的长度。
用二维数组来表示矩阵
由于二维数组和矩阵之间紧密的关系,我们经常使用二维数组来代表矩阵。比如说,如果我们想要用二维数组输出如下图形:
- 1 0 0 0
- 0 2 0 0
- 0 0 3 0
- 0 0 0 4
代码应该如下所示:
e.g.
//创建一个二维数组
int arr[][] = new int[4][4];
//初始化二维数组
arr[0][0] = 1;
arr[1][1] = 2;
arr[2][2] = 3;
arr[3][3] = 4;
//输出二维数组
for(int i=0; i<4; i++){
for(int j=0; j<4; j++){
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
处理二维数组
其实,看完了上面那个实例,相信大家也已经对二维数组的处理有所了解了。没错,二维数组访问的方法就是这样的:
name[r][c];
//r代表row行,c代表column列。
而遍历二维数组的方法,也在上一个实例中有所展示了。其实和一维数组差不多,只需要两个循环相互嵌套即可。 为了方便大家理解,我们这里再举一个遍历二维数组的例子。这个例子会把一个10x10的二维数组n的所有数值改为100。
e.g.
Integer[][] n = new Integer[10][10];
for(int i = 0; i < n.length; i++){
for(int j = 0;j < n.length; j++){
n[i][j] = 100;
}
}
小练习
1.Consider a class that has this private instance variable:
private int[][] mat;
The class has the following method, alter.
public void alter(int c) {
for (int i = 0; i < mat.length; i++)
for (int j = c + 1; j < mat[0].length; j++)
mat[i][j-1] = mat[i][j];
}
If a 3×4 matrixmatis
- 1357
- 2468
- 3579
then alter(1) will change mat to
(A)
- 1577
- 2688
- 3799
(B)
- 157
- 268
- 379
(C)
- 1357
- 3579
(D)
- 1357
- 3579
- 3579
(E)
- 1777
- 2888
- 3999
下面的内容要按一下才会显示: