AI智能
改变未来

Java语言程序设计(十七)多维数组的声明创建以及方法传递

之前我们介绍过一维数组来存储线性的元素集合,我们可以用二维数组存储矩阵或表格。

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

      下面是声明二维数组的语法:数据类型[][]数组名;例如int[][] matrix;可以使用这个语法创建5*5的int型二维数组,并将它赋值给matrix; 

     int[][] matrix = new int[5][5];

      二维数组中使用两个下标,一个表示行,一个表示列,同一维数组一样,每个下标检索都是int型的,从0开始。

      注意:使用matrix[2,1]访问第二行第一列的元素是一种常见错误,在Java中,每个下标必须放在一对方括号中。 

      2.获取二维数组的长度

      二维数组实际上是一个数组,它的每个元素都是一个一维数组,数组x的长度是数组中元素的个数,可以用x.length获取该值,二维数组可以看作一个一维数组,它的每个元素是另一个一维数组。

      二维数组中的每一行就是一个数组,因此各行的长度就可以不同,这样的数组成为锯齿数组,如果事先不知道锯齿数组的值,但知道它的长度,可以使用如下声明:

      int [][] triangleArray = new int[5][];

      triangleArray[0] = new int[5];

      triangleArray[1] = new int[4];

      triangleArray[2] = new int[3];

      triangleArray[3] = new int[2];

      triangleArray[4] = new int[1];

      使用语法new int[5][]创建数组时,必须指定第一个下标。语法new int[][]是错误的。

      3.处理二维数组

      (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<matrix[row].length;column++)

              matrix[row][column] = input.nextInt();

           }

       (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)打乱二维数组中的所有元素,对每个元素matrix[i][j],随机产生下标i1和j1,然后互换两者。     

       for(int row = 0;row<matrix.length;row++){

           for(int column=0;column<matrix[row].length;column++){

               int i1 = (int)(Math.random()*matrix.length);

               int j1 = (int)(Math.random()*matrix[row].length);

               int temp = matrix[i][j];

               matrix[i][j] = matrix[i1][j1];

               matrix[i1][j1] = temp;

               }

}

      4.给方法传递二维数组

      我们像传递一维数组一样,给方法传递二维数组,我们下面举一个例子,返回矩阵中所有元素的和,程序清单如下:    

package passtwodimensionalaray;

import java.util.Scanner;

/**
 *
 * @author mjd
 */
public class PassTwoDimensionalAray {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Scanner input = new Scanner(System.in);
        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();
         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=total+m[row][column];
           }
    }
    return total;
    }
}

      输入一个三行四列的二维数组,输出结果和,程序正确运行。

赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Java语言程序设计(十七)多维数组的声明创建以及方法传递