【问题标题】:Java passing 2 dimension array to methodJava将二维数组传递给方法
【发布时间】:2013-12-18 05:42:33
【问题描述】:
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;
  • main方法的签名呢??

标签: java arrays multidimensional-array parameter-passing


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    正如 Alya'a Gamal 所说,如果您想将 int 放入 String 数组中,您需要解析它: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
    【解决方案3】:

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

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

    方式#1 ==>

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

    方式#2 ==>

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

    【讨论】:

      【解决方案4】:

      我在这里看到三个问题:

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

      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类中的以下静态方法在控制台上打印二维数组的元素。

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

      希望这会有所帮助。

      +1 用于隔离问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-08-05
        • 1970-01-01
        • 2015-05-01
        • 2023-03-16
        • 2012-04-05
        • 2021-01-07
        相关资源
        最近更新 更多