繁体   English   中英

Java将2维数组传递给方法

[英]Java passing 2 dimension array to method

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维数组数据,哪里可以出问题?

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

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

正如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
        }

    }

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

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

方式#1 ==>

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

方式#2 ==>

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

我在这里看到三个问题:

(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用于隔离问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM