Java将2维数组传递给方法

时间:2013-12-02 13:33:00

标签: java arrays multidimensional-array parameter-passing

public static void main{
    String [][] book = new String[100][6];

    for(int i = 0; i < 1; i++) {
        for(int j = 0; j < 5; j++) {
            book[i][j] = i;
        }
    }

    arrayMethod(book);
}

public static void arrayMethod(String[][] array){
    System.out.println(Arrays.asList(array));
}

arrayMethod方法输出 [[Ljava.lang.String; @ 639facbc,[Ljava.lang.String; @ 8059dbd,[Ljava.lang.String; @ 28b6e768,[Ljava] .lang.String; @ 1271ba,....

问题是在arrayMethod中我无法访问2维数组数据,哪里可以出问题?

4 个答案:

答案 0 :(得分:4)

它正在做你想要的:你假装(第一级)数组是ListArray),然后打印toString()那些,看起来像[Ljava.lang.String@pointer这样的东西。你可能想要这个:

System.out.println(Arrays.deepToString(array));

答案 1 :(得分:2)

正如Alya'a Gamal所说,如果你想在一个String数组中放入一个int,你需要解析它:book[i][j] = Integer.toString(i);。 然后,如果你想显示你的数组,你需要运行它,例如:

public static void arrayMethod(String[][] array){
        for(int i = 0; i < array.length;i++) {
            for(int j = 0; j < array[i].length;j++)
                System.out.println(array[i][j]); // a stringBuilder would be better than to print inside the loop
        }

    }

答案 2 :(得分:2)

您可以使用Arrays.toString打印1-D字符串数组,但是不能使用Arrays.toString直接打印2-D数组。

您可以通过两种方式在控制台中打印2D字符串数组。

方式#1 ==&gt;

System.out.println(Arrays.deepToString(array));

方式#2 ==&gt;

 for(String[] arr: array)
 {
        System.out.println(Arrays.toString(arr));
 }

答案 3 :(得分:2)

我在这里看到三个问题:

(1)。主方法的签名看起来很奇怪。这会引发编译问题。

public static void main(String args[])
{
// Your code here
}

(2)。在以下代码中:

for(int i = 0; i < 1; i++) {
  for(int j = 0; j < 5; j++) {
            book[i][j] = i;
        }
    }

book[i][j] =i; // Here you are trying to insert an int in place where a String is required.

这将再次导致编译时问题。

您可以按照以下方式更正:

 book[i][j] = Integer.toString(i);

(3)。

Arrays类中使用以下静态方法在控制台上打印2D数组的元素。

System.out.println(Arrays.deepToString(array));

希望这有帮助。

+1用于隔离问题。