如何在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数组作为参数传递的正确方法是什么?
答案 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();
}
}
}
设为静态。