初学JavaDay09——二维数组
1.二位数组的基本知识
1.1声明而二位数组并创建二维数组
-
声明二维数组的语法
数据类型 [ ][ ] 数组名;
-
创建二维数组:
int[][] matrix=new int[5][5];
其中,二维数组有两个下标,一个表示行,一个表示列。默认值都为0。如图:
-
将某个值赋给特定的位置
例如将7赋给行为2,列为1的特定元素
matrix[2][1]=7;
1.2 获取二维数组的长度
- 二维数组实际上是一维数组,他的每个元素都是一个一维数组。
- 数组的长度是数组X中元素的个数,可以使用X.length。
例如:
数组 x = new int[3][4] ,那么x[0],x[1],x[2]都是一位数组,每个数组包含4个元素。
1.3 锯齿数组
因为二维数组的每一行本身就是一个数组,所以各行的长度可以不相同,这样的数组称为锯齿数组。
如果事先不知道锯齿数组的值,但知道它的长度,可以使用类似如下的语句去创建:
int[ ][ ] juchiArray =new int[5][ ]
juchiArray=[0] =new int[5]
然后再将值赋给数组。
2 处理二维数组
1.(使用输入值初始化数组)将用户输入的值,赋给所创建的数组
java.util.Scanner input =new Scanner(System.in);
System.out.println("Enter + matrix.length + ’'rows and ''+ matrix[0].length + *'columns: ;
for (int row-0; row < matrix.length; row++){
for (int column * 0; column < matr1x[row].length; column++){
matrix[row][column]-input.nextlntO;
}
}
2.(使用随机值初始化数组)循环使用0-99之间的随机初始化数组:
for (int row * 0; row < matrix.length; row++){
for (int column * 0; column < matrix[row].length; column++){
matrix[row][column] = (int) (Math.random() * 100);
}
}
3.(求数组的和)
int total = 0;
for(int row * 0; row < matrix.length; row++){
for(int column « 0; column < matrix[row] .length; column++){
total +=matrix[row] [column];
}
}
4.求每一列的和
for(int column = 0;
column < matrix[0] .length; column++){
int total=0;
for (int row = 0; row < matrix.length; row++)
total += matrix[row] [column] ;
System.out.println("Sum for column " + column + " is ’’ + total);
}
5.数组的乘法
public class MatrixMutil{
public static void main(String args[]){
int[][] arr = new int[][]{
{1,2,3},
{4,5,6}
};
int[][] arr1 = new int[][]{
{1,4},
{2,5},
{3,6}
};
int[][] newarr = new int[arr.length][arr1[0].length];
for(int i=0;i<newarr.length;i++){
for(int j=0;j<newarr[i].length;j++){
int sum=0;
for(int k=0;k<arr1.length;k++){
sum+=arr[i][k]*arr1[k][j];
}
newarr[i][j]=sum;
System.out.print(newarr[i][j]+" ");
}
System.out.println();
}
}
}
6.打乱数组
for(int i =0; i < matrix.length; i++){
for(int j-0; j < matrix[ i] .length; j++){
int il =(int) (Math.random()* matrix.length) ;
int jl *(int) (Math.randomC)* matrix[i] .length) ;
// Swap matrix[ i] [j]with matrix[il] [jl]
int temp * matrix[i] [j] ;
matrix[ i] [j]-matrix[il] [jl] ;
matrix[il] [jl]* temp;
7.按列求和
for(int column = 0; column < matrix[0] .length; column--){
int total-0;
for (int row = 0; row < matrix.length; row++)
total += matrix[row] [column] ;
System.out.println("Sum for column " + column + " is ’’ + total) ;
3 将二维数组传递给方法
将一个二维数组传递给方法的时候,数组的引用传递给了方法。
-
可以像一维数组一样,将方法传递二维数组。
-
也可以从一个方法返回一个一维数组。
4 例题
解题思路:首先对数组进行初始化,将用户输入的元素赋给数组,然后对数组金溪县遍历,求出每一行的和,最后再输出数组
import java.util.Scanner;
class Class35{
public static void main(String[] args){
//用户输入指定的行列
Scanner scanner=new Scanner(System.in);
System.out.print("请输入行列:");
int row=scanner.nextInt(); //获得用户输入的行
int col=scanner.nextInt(); //获得输入的列数
double[][] matrix=new double[row][col];
for(int i=0;i<matrix.length;i++){
for(int j=0;j<matrix[i].length;j++){
matrix[i][j]=scanner.nextDouble(); //获得数组的元素
}
}
for(int j=0;j<col;j++){
double sum=0; //求数组的和
for(int i=0;i<row;i++){
sum+=matrix[i][j];
}
System.out.println(j+" col's sum is "+sum);输出打印结果
}
}