如何比较二维锯齿状数组中某列元素的长度

How to compare the lengths of the elements in a column in a two-dimensional jagged array

我正在处理这部分代码(打印第 i 列中的元素数量)我不确定如何检查是否有任何其他列的元素数量与第 i 列中的元素数量相同,因为在我的锯齿状数组 用户不能输入包含 2 列或更多列且元素数量相同的数组。

package com.company;
import java.util.Scanner;
import java.util.Arrays;
public class Main {
    public static void main(String[] args) {
            Scanner input = new Scanner (System.in);
            //define / make array 
            int columns;
            int repeat;
            repeat = 0;
            //take ragged array inout
            do
            {System.out.print("How many columns : ");
            columns = input.nextInt();
            // define array
            int[][] raggedArray = new int[columns][];
            // way to enter ragged array
            for (int i = 0; i < columns; i++){
                System.out.print("Enter the number of rows for column number " + (i + 1) + " : ");
                int rows = input.nextInt();
                raggedArray[i] = new int[rows];
                for (int j = 0; j < rows; j++) {
                    System.out.print("Enter row value for row number " + (j + 1) + " : ");
                    //adding the input to array
                    raggedArray[i][j] = input.nextInt();
                }
            }
            // find out the number of columns
/* NEED HELP HERE to compare if there any 2 columns with the same number of elements in them / same number of rows */
            int numberOfColumns = raggedArray.length;
            for (int i = 0; i < numberOfColumns; i++) {
                System.out.println("In the column " + i + " there are " + raggedArray[i].length + " rows");
                }
            } while(repeat == 99);
        }
    }

您可以替换这两行:

System.out.print("Enter the number of rows for column number " + (i + 1) + " : ");
int rows = input.nextInt();

像这样:

for (int i = 0; i < columns; i++){
    int rows;
    while (true) {
        System.out.print("Enter the number of rows for column number " + (i + 1) + " : ");
        rows = input.nextInt();
        int k = 0;
        for (; k < i; k++) {
            if(raggedArray[k].length == rows) break;
        }
        if(k == i) break;
        System.out.print("This number of rows has already been used.");
    }
    raggedArray[i] = new int[rows];

    // ...
}

如果您熟悉并允许使用 Set,代码可以稍微简化。

Set<Integer> seen = new HashSet<>();
for (int i = 0; i < columns; i++){
    int rows;
    while (true) {
        System.out.print("Enter the number of rows for column number " + (i + 1) + " : ");
        rows = input.nextInt();
        if(seen.add(rows)) break;
        System.out.print("This number of rows has already been used.");
    }
    raggedArray[i] = new int[rows];

    // ...
}