有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java在具有不同长度的第二维度的2D数组中迭代

我有一个2D数组,其中需要用户输入来创建第一个维度的长度,然后循环并获得第二个维度的长度。例如:如果用户在第一个维度中输入4,它将循环4次,得到第二个维度的长度,可以是2,3,2,4。我不知道我怎么才能有效地循环这个


共 (2) 个答案

  1. # 1 楼答案

    玩这个代码

    import java.util.Arrays;
    import java.util.Scanner;
    
    public class MyClass {
        public static void main(String args[]) {
            Scanner sc = new Scanner(System.in);
            System.out.println("Enter number of Arrays that 2D Array( Arrays of Arrays) should contain:");
            int len = sc.nextInt();
            int [][]arr2D = new int[len][];
    
            for(int i=0; i<len; i++){
                System.out.println("Enter length for Array at index "+i);
                int innerlen = sc.nextInt();
                arr2D[i] = new int[innerlen];
            }
    
            System.out.println(Arrays.deepToString(arr2D));
        }
    }
    

    输出

    Enter number of Arrays that 2D Array( Arrays of Arrays) should contain:
    5
    Enter length for Array at index 0
    3
    Enter length for Array at index 1
    4
    Enter length for Array at index 2
    5
    Enter length for Array at index 3
    2
    Enter length for Array at index 4
    1
    [[0, 0, 0], [0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0], [0]]
    

    index 01234
        0| -    <- second dimension length tells how many element array at this index contains
        1|  
        2|  -
        3| 
        4|-
    
         ^
         | first dimension length tells how many arrays are allowed in array of array
    
  2. # 2 楼答案

    实际上不必迭代内部数组,只需迭代外部数组并获得每个内部数组的长度属性。您可以通过一个简单的for循环来实现这一点:

    int[] arrayLengths = new int[outerArray.length];
    
    for (int i = 0; i < outerArray.length; i++) {
      arrayLengths[i] = outerArray[i].length;
    }
    

    或者,如果你觉得有意思,可以使用streams

    int[] arrayLengths = Arrays.stream(outerArray)
                             .mapToInt(innerArray -> innerArray.length)
                             .toArray();