Java将二维数组传递给方法

3
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方法中我无法访问二维数组数据,可能出了什么问题?


编译时需要使用 book[i][j] = "" + i; - chro
主方法的签名怎么样? - Sameer Sawla
4个回答

4
它正好做你想要的:你在假装(一级)数组是一个List(由Array组成),然后打印这些的toString(),它看起来像[Ljava.lang.String@pointer。你可能想要这个代替:
System.out.println(Arrays.deepToString(array));

2

就像Alya'a Gamal所说,如果你想将一个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
        }

    }

有一个问题,只传递了1个(最后一个)数组元素,所有其他元素都是“null”。 - Wizard

2

您可以使用Arrays.toString打印一维字符串数组,但是您无法直接使用Arrays.toString打印二维数组。

有两种方法可以在控制台中打印2D字符串数组。

方法1 ==>

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

第二种方式 ==>

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

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数组的元素。

public static void deepToString(Object[][] array)

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

希望这能帮到你。
为分离问题点点赞。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接