0

有人可以向我详细解释一下为什么这段代码会打印 2 吗?

import java.util.*;

public class TestCode2 {
   public static void main(String[] args) {
      int[][] array = {{1,2,3,4}, {5,6,7,8}};
      System.out.println(m1(array)[0]);
     // System.out.println(m2(array)[1]);
   }

   public static int[] m1(int[][] m) {
      int[] result = new int[2];
      result[0] = m.length;
      result[1] = m[0].length;
      return result;
   }
}
4

3 回答 3

3
    int[][] array = {{1,2,3,4}, {5,6,7,8}};
=>  int[][] array = {arrayOne, arrayTwo};

数组的长度为 2,因为它只是一个包含 2 个子数组(长度均为 4)的二维数组。

所以

   array.length = 2;
   array[0].length = length of arrayOne (i.e: length of {1,2,3,4}) = 4
   array[1].length = length of arrayTwo (i.e: length of {5,6,7,8}) = 4


总结一下:

public static int[] m1(int[][] m) {
      int[] result = new int[2];
      result[0] = m.length; //m.length = 2
      result[1] = m[0].length; //m[0].length = length of {1,2,3,4} = 4
      return result; //{2,4}
   }

然后你只需打印返回的这个数组的第一个元素,即 2。

于 2013-10-21T15:06:24.537 回答
1

这是一个二维数组:当你这样做时: int [][] array = {{1,2,3,4},{5,6,7,8}} int a=array.length; \ 即 a=2 这是因为数组将 2 个集合视为其元素意味着 {1,2,3,4} 和 {5,6,7,8} 被视为单个元素,抱歉我使用的格式错误移动的

于 2013-10-21T15:17:31.613 回答
1

m1() 将 2D 数组作为 i/p 并返回一个 (1D) 数组,其中第一个元素作为 i/p 数组的长度,在本例中为 2;因此 2。

于 2013-10-21T15:18:13.947 回答