簡體   English   中英

迭代2D數組,其中第二維的長度不同

[英]Iterating through a 2D array with the second dimension having different lengths

我有一個2D數組,其中需要用戶輸入以創建第一個尺寸長度,然后循環獲取第二個尺寸長度。 例如:如果用戶為第一個維度輸入4,則它將循環遍歷4次並獲得第二個維度長度,該長度可能為2、3、2、4。 我不確定如何才能有效地解決這個問題...

實際上,您不必迭代內部數組,只需要做的就是迭代外部數組並獲取每個內部數組的length屬性。 您可以使用簡單的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();

玩這個代碼

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM