Java数组(2):二维数组

1.二维数组的初始化

二维数组的实质:一维数组的数组。 先创建一维数组,再在一维数组中存储一维数组的引用变量。

①二维数组的初始化格式1:

数据类型[ ][ ] 变量名 = new 数据类型[m][n];

  m代表二维数组中一维数组的个数;
  n代表二维数组中包含的每个一维数组,所能包含的元素个数.

例如:

        int[][] arr = new int[3][2] ;

②二维数组的初始化格式2:

数据类型[ ][ ] 变量名 = new 数据类型[m][ ];

m表示这个二维数组有多少个一维数组;
这一次没有直接给出一维数组的元素个数,可以动态的给出。

举例:

	int[][] arr = new int[2][];
	arr[0] = new int[1];
    arr[1] = new int[2];
    arr[2] = new int[3];

注意:这种方式从存储角度讲更加灵活!

③二维数组的初始化格式3:

数据类型[ ][ ] 变量名 = new 数据类型[][]{{元素…},{元素…},{元素…}};

简化版格式:
数据类型[ ][ ] 变量名 = {{元素…},{元素…},{元素…}};

例:

int[][] arr = {{9,6,3,5},{1,5,8},{2,5}};

注意:
简化版只能在定义数组的引用变量时使用!

2.二维数组的遍历

public static void print(int[][] arr){
        for (int i = 0; i < arr.length ; i++) {
            for (int j = 0; j < arr[i].length ; j++) {
                System.out.print(arr[i][j]+" ");
            }
            System.out.println();
        }
    }

注意:二维数组的length表示存储一维数组的个数。

3.补充

1.打印杨辉三角:

package com.codeInClass.TwoDimensionalArray;

import com.publicMethod.PrintTwoDemisionArray;

import java.util.Scanner;

/*
* 打印杨辉三角:
* 1
* 1 1
* 1 2 1
* 1 3 3 1
* 1 4 6 4 1
* */
public class triangleYangHui {
    //打印杨辉三角形(行数可以键盘录入)
    public static  int[][] printTriangle(int n){
        int[][] result;//存储杨辉三角内容
        //当n=1时直接输出
        if(n == 1){
            result=new int[][]{{1}};
            return result;
        }
        //当n=2时直接输出
        if(n == 2){
            result=new int[][]{{1},{1,1}};
            return result;
        }
        //当n>3时
        result=new int[n][];
        result[0]=new int[]{1};
        result[1]=new int[]{1,1};
        for(int i = 2;i < n;i++){
            result[i]=new int[i+1];//开辟二维数组
            result[i][0] = 1;//每一行第一个元素值为1
            result[i][i] = 1;//每一行最后一个元素值也为1
            for (int j = 1; j < i; j++) {
                //第i行第j列的值 = 第i - 1行第j列值 + 第i - 1行第j - 1列
                result[i][j] = result[i-1][j-1]+result[i-1][j];

            }
        }
        return result;
    }

    public static void main(String[] args) {
        System.out.println("输入正整数n:");
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        //自己写的打印二维数组公共方法
        PrintTwoDemisionArray.print(printTriangle(n));
    }
}

2.输入一个 mn的矩阵 和一个np的矩阵,并初始化, 要求打印出两个矩阵的乘积。

package com.codeAfterClass.day07;

import com.codeInClass.PrintTwoDemisionArray;

/*
* 输入一个 m*n的矩阵 和一个n*p的矩阵,并初始化, 要求打印出两个矩阵的乘积。
* */
public class MatrixMultiplication {
   //矩阵相乘
   public static int[][] multiplication(int[][] arr1,int[][] arr2){
       //结果矩阵
       int[][] result = new int[arr1.length][arr2[0].length];
       for (int i = 0; i < arr1.length ; i++) {
           for (int j = 0; j < arr2[0].length; j++) {
               for (int k = 0; k < arr1[0].length; k++) {
                   result[i][j] += arr1[i][k] * arr2[k][j];
               }

           }
       }
       return result;
   }
   public static void main(String[] args) {
       //4x5矩阵
       int[][] arr1 = new int[][]{{1,8,5,9,3},{0,5,8,9,2},{7,4,4,5,0},{1,3,5,8,9}};
       //5x6矩阵
       int[][] arr2 = new int[][]{{9,8,7,4,1,4},{7,8,9,5,6,2},{7,4,5,6,9,2},{3,6,9,8,5,4},{11,2,54,3,9,5}};

       //矩阵相乘内标要相同
       if(arr1[0].length != arr2.length){
           System.out.println("这两个矩阵无法相乘!");
       }else{
           //PrintTwoDemisionArray.print()为自己写的打印二维数组公共方法
           System.out.println("矩阵1:");
           PrintTwoDemisionArray.print(arr1);
           System.out.println("矩阵2:");
           PrintTwoDemisionArray.print(arr2);
           System.out.println("矩阵相乘结果:");
           PrintTwoDemisionArray.print(multiplication(arr1,arr2));
       }
   }
}

3.定义一个三维数组,并初始化之。
写一个打印函数,负责打印三维数组中的数据,并测试。

package com.codeAfterClass.day07;
/*
* 定义一个三维数组,并初始化之。
 写一个打印函数,负责打印三维数组中的数据,并测试
* */
public class PrintThreeDimensionArray {
   //打印三维数组
   public static void print(int[][][] arr){
       for (int i = 0; i < arr.length; i++) {
           for (int j = 0; j <arr[i].length ; j++) {
               for (int k = 0; k < arr[i][j].length; k++) {
                   System.out.print(arr[i][j][k]+" ");
               }
               System.out.println();
           }
           System.out.println();
       }
   }
   public static void main(String[] args) {
       int[][][] threeDArray = new int[2][3][4];
       print(threeDArray);
   }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值