二维数组:
声明一个二维数组
数据类型[][] 数组名;
int[][] array;
上在面只是声明了一个数组并未创建一个真正的数组要创建一个数组则要使用
array = new int[5][5];
二维数组中使用两个下标一个表示行,一个表是列,同一维数组一样下标都是从0开始的
在Java中可以使用数组初始化来声明、创建和初始化一个二维数组
int[]][] array = {
{1,2,3},
{4,5,6},
{7,8,9,10}
};
关于二维数组的长度:
二维数组中每一个元素都是一个一维数组,比如二维数组x,那它的长度是x.length
而对于每一个二维数中中的元素其中又是一个一维数组则x[0]…x[x.length-1],它们其实都是一个一维数组可以通过x[0].length来得到它们的长度
注意:对于二维数组来说其中的每一个元素又都是一个数组因而在内部各元素对应的一个一维数组的长度是可就的也就是可以不一定要长度都相等,这种不相等长度的二维数组也就是一种锯齿数组
int[][] array = new int[3][];
array[0] = new int[3];
array[1] = new int[2];
array[0] = new int[1];
如下的就可以进行赋值
array[0][1] = 50;
注意:对于二维数组在进行创建时可以没有第二维的长度但是第一维的长度是不可以少的
对二维数组的处理:
int[][] matrix = new int[10][10];
使用输入值初始化数组
java.util.Scanner input = new Scanner(System.in);
System.out.println(“输入”+matrix.length+”行”+matrix[0].length+”列:”);
for(int row = 0;row<matrix.length;row++){
for(int column = 0;column<matrix[row].length;column++){
matrix[row][column] = input.nextInt();
}
}
使用随机值初始化数组
for(int row = 0;row<matrix.length;row++){
for(int column = 0;column<matrix[row].length;column++){
matrix[row][column] = (int)(Math.random()*100);
}
}
打印数组
for(int row = 0;row<matrix.length;row++){
for(int column = 0;column<matrix[row].length;column++){
System.out.print(matrix[row][column]+” ”);
}
System.out.println();
}
对二维数组中的所有元素求和
int total = 0;
for(int row = 0;row<matrix.length;row++){
for(int column = 0;column<matrix[row].length;column++){
total += matrix[row][column] ;
}
}
对数组中按行求和
for(int row = 0;row<matrix.length;row++){
int total = 0;
for(int column = 0;column<matrix[row].length;column++){
total += matrix[row][column] ;
}
System.out.println((row+1)+“行的和:”+total);
}
哪一行的各最大
int maxRow = 0;
int indexOfMaxRow = 0;
for(int column = 0;column<matrix[0].length;column++){
maxRow += martix[0][column];
}
for(int row = 1 row<matrix.length;row++){
int totalOfThisRow = 0;
for(int column = 0;column<matrix[row].length;column++){
totalOfThisRow += matrix[row][column];
}
if(totalOfThisRow>maxRow){
maxRow = totalOfThisRow;
indexOfRow = row;
}
}
System.out.prinltn(“行:”+indexOfMaxRow+”和是:”+maxRow);
随机打乱
for(int i = 0;i<matrix.length;i++){
for(int j = 0;j<matrix[i].length;j++){
//随机产生相应范围的下标值
int i1 = (int)(Math.random()*martix.length);
int j1 = (int)(Math.random()*martix[i].length);
//进行交换
int temp = matrix[i][j];
matrix[i][j] = matrix[i1][j1];
matrix[i1][j1] = temp;
}
}
可以把二维数组如同一维数组一样也可以传给方法
import java.util.Scanner;
publicclass PassArray {
publicstaticvoid main(String[] args) {
Scanner input = new Scanner(System.in);
// 创建一个数组
int[][] m = newint[3][4];
for (int row = 0; row < m.length; row++) {
for (int column = 0; column < m[row].length; column++) {
System.out.print("m" + "[" + row + "]" + "[" + column + "]=");
m[row][column] = input.nextInt();
}
}
System.out.println("整个二维数组的和是:" + sum(m));
}
privatestaticint sum(int[][] m) {
int total = 0;
for (int row = 0; row < m.length; row++) {
for (int column = 0; column < m[row].length; column++) {
total += m[row][column];
}
}
return total;
}
}
除了二维数组Java中也可以表示n维数组,比如一下三维数组
double[][][] scores = new double[10][20][2]
那么对于三维数组来说它是由二维数组组成的,而每一个二维数组中的元素又是由一个一维数组来组成的