传递二维数组作为参数

时间:2014-12-26 12:20:52

标签: java arrays

如何在Java中将二维数组作为参数传递。例如,我将矩阵作为输入和显示的代码是:

import java.util.Scanner;

class matrix {
    int i,j;
    static int[][] a = new int[3][3]; 
    Scanner one = new Scanner(System.in);

    public static void main(String args[]) {
        matrix obj = new matrix();
        System.out.println("Enter the Matrix");
        obj.getdate(a); 
        obj.display(a);
    }

    void getdata(int[][] a) {
        for (i = 0; i < 3; i++) {
            for (j = 0; j < 3; j++) {
                a[i][j] = one.nextInt();
            }
        }
    }

    void display(int[][] a) {
        for (i = 0; i < 3; i++) {
            for (j = 0; j < 3; j++) {
                System.out.println("" + a[i][j]);
            }
        }
    }
}

这种传递2D数组的方法不起作用。将2D数组作为参数传递的正确方法是什么?

2 个答案:

答案 0 :(得分:1)

问题是您尝试从其范围之外访问a。为此,您需要将display()的方法签名更改为display(int[][] a)。这应该适合您在obj.display(a);显示数组值时进行的调用。

答案 1 :(得分:1)

首先,您应该将类​​命名为以大写字母开头,例如<{1}}而不是Matrix遵循Java约定。

调用没有参数定义的方法matrix时会出现错误。由于数组display是一个类成员字段,因此您不需要将其传递给a,因为它已经对所有类成员可见。所以你可以简单地按如下方式调用它:

display

同样对于obj.display(); 方法(在调用getdata而不是getdate时有错误),您可以在没有任何参数的情况下定义它:

getdata

您也不需要将数组void getdata() { for (i = 0; i < 3; i++) { for (j = 0; j < 3; j++) { a[i][j] = one.nextInt(); } } } 设为静态。