【问题标题】:Declaration and format of 2D Arrays in JavaJava中二维数组的声明和格式
【发布时间】:2014-04-01 14:20:25
【问题描述】:

我最近和一个朋友就 Java 中多维数组的声明发生了争执。 它将涉及以下类型的数组:

int[][] array = new int[2][3];

到目前为止一切顺利,但是我们中的一个人将此数组视为 2 个数组,每个数组包含 3 个元素,而另一个人将其视为 3 个数组,每个数组包含 2 个元素。所以 A 认为这是正确的声明:

int[][] array = new int[][]{{0,1,2},{3,4,5}};

而 B 认为这是正确的声明:

int[][] array = new int[][]{{0,1},{2,3},{4,5}};

我们谁是正确的?那人怎么能证明他是对的?

谢谢:)

【问题讨论】:

标签: java arrays multidimensional-array 2d


【解决方案1】:

基本上二维数组语法如下,

data_type[][] array_name = new data_type[x][y];

很明显A是对的。

为了消除混淆,请参阅 java 中二维数组上的 this 资源。

【讨论】:

    【解决方案2】:

    也许下面的代码可以帮助我们了解数组在 Java 中的工作方式:

    int[][] array=new int[1][3];
    int[] sub=array[0];
    sub[0]=1; sub[1]=2; sub[2]=42;
    System.out.println(Arrays.deepToString(array));
    array=new int[2][];
    System.out.println(Arrays.deepToString(array));
    array[0]=sub; array[1]=sub;
    System.out.println(Arrays.deepToString(array));
    

    【讨论】:

      【解决方案3】:

      A 是正确的。

      这段代码的输出:

      import java.util.Arrays;
      public class Test
      {
          public static void main(String[] args)
          {
              int[][] array1 = new int[2][3];
              //int[][] array2 = new int[3][2];
      
              System.out.println(intArray2DToString(array1));
              //System.out.println(intArray2DToString(array2));
          }
      
          /**
           * Converts a 2D int array to a string
           */
          static String intArray2DToString(int[][] array2D)
          {
              String str = "[";
              for(int[] array : array2D)
              {
                  str += Arrays.toString(array);
                  str += ", ";
              }
              str += "]";
              str = str.replaceAll(", (?=])", "");
              return str;
          }
      }
      

      是:

      [[0, 0, 0], [0, 0, 0]]
      

      【讨论】:

        【解决方案4】:
        int[][] array = new int[2][3];
        

        结构大致是:

        [[x, x], [x, x], [x, x]]
        

        【讨论】:

          【解决方案5】:

          如果你运行这段代码:

              int[][] array = new int[2][3];
              System.out.println(array[0].length);
              System.out.println(array[1].length);
          

          输出是:

          3
          3
          

          也就是说,那个人A是对的。

          【讨论】:

            猜你喜欢
            • 2014-05-22
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2013-03-24
            • 1970-01-01
            • 2011-05-23
            • 2019-12-11
            相关资源
            最近更新 更多