第八章 多维数组

二维数组基础

  • 二维数组中的元素通过行和列来访问

声明二维数组变量并创建二维数组

  • int[][] martix = new int[5][5];

获取二维数组的长度

  • 二维数组实际上是一个其中每个元素都是一个一维数组的数组

不规则数组

  • 二维数组中的每一行本身就是一个数组
  • 因此,各行的长度可以不同
  • 使用语法 new int[ 5 ] [ ] 创建数组时,必须指定第一个下标,new int[ ] [ ] 是错误的

处理二维数组


        int[][] martix = new int[10][10];

        //使用输入值初始化数组
        for(int row=0; row< martix.length; row++)
            for(int column=0; column<martix[row].length; column++){
                martix[row][column] = input.nextInt();
            }

        //使用随机值初始化数组
        for(int row=0; row< martix.length; row++)
            for(int column=0; column<martix[row].length; column++){
                martix[row][column] = (int)(Math.random()*100);
            }

        //打印数组
        for(int row=0; row< martix.length; row++)
            for(int column=0; column<martix[row].length; column++){
                System.out.println(martix[row][column]+" ");
            }

        //对所以元素求和
        int sum = 0;
        for(int row=0; row< martix.length; row++)
            for(int column=0; column<martix[row].length; column++){
                sum += martix[row][column];
            }
        
        //按列求和
        for (int column=0; column<martix[0].length; column++){
            int sum = 0;
            for (int row=0; row<martix.length; row++) 
                sum += martix[row][column];
        }
        
        //哪一行的和最大
        int maxRow = 0;
        int indexOfMaxRow = 0;
        
        for (int column=0; column<martix[0].length; column++)
            maxRow += martix[0][column];
        
        for (int row=0; row<martix.length; row++){
            int totalOfThisRow = 0;
            for(int column=0; column<martix[row].length; column++)
                totalOfThisRow += martix[row][column];
            
            if(totalOfThisRow > maxRow){
                maxRow = totalOfThisRow;
                indexOfMaxRow = row;
            }
        }

将二维数组传递给方法

  • 将一个二维数组传递给方法时,数组的引用传递给了方法
package chapter8;
//listing 8-1
import java.util.Scanner;

public class PassTwoDimensionalArray {
  public static void main(String[] args) {
    // Create a Scanner
    Scanner input = new Scanner(System.in);
    
    // Enter array values
    int[][] m = new int[3][4];
    System.out.println("Enter " + m.length + " rows and "
      + m[0].length + " columns: ");
    for (int i = 0; i < m.length; i++)
      for (int j = 0; j < m[i].length; j++)
        m[i][j] = input.nextInt();

    // Display result
    System.out.println("\nSum of all elements is " + sum(m));
  }
  
  public static int 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;
  }
}

多维数组

  • 一个三维数组可以认为是由一个二维数组的数组组成
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值