初学JavaDay09——二维数组

初学JavaDay09——二维数组

1.二位数组的基本知识

1.1声明而二位数组并创建二维数组
  1. 声明二维数组的语法

    数据类型 [ ][ ] 数组名;

  2. 创建二维数组:
    int[][] matrix=new int[5][5];
    其中,二维数组有两个下标,一个表示行,一个表示列。默认值都为0。如图:
    在这里插入图片描述

  3. 将某个值赋给特定的位置
    例如将7赋给行为2,列为1的特定元素

matrix[2][1]=7;

在这里插入图片描述

1.2 获取二维数组的长度
  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);输出打印结果
        }      
    }
   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值