【问题标题】:How to check if all lines in a 2d int array have the same length?如何检查 2d int 数组中的所有行是否具有相同的长度?
【发布时间】:2022-01-05 04:02:51
【问题描述】:

如果我有一个一维数组,我可以使用a.length 轻松检查行的长度。在二维数组中,我可以用类似这样的方式检查所有列的长度

int[][] a = {{5,3,4,6,7,8,9,1,2},
             {6,7,2,1,9,5,3,4,8},
             {1,9,8,3,4,2,5,6,7},
             {8,5,9,7,6,1,4,2,3},
             {4,2,6,8,5,3,7,9,1},
             {7,1,3,9,2,4,8,5,6},
             {9,6,1,5,3,7,2,8,4},
             {2,8,7,4,1,9,6,3,5}};
for (int k = 0; k < a.length; k++) {
    if (a[k].length != 9) return false
}

我什至不确定这是否正确。如何检查不同的行?当我有一个 4x4 矩阵,而最后一行只包含 3 个值而不是 4 个值时,我怎样才能找到它?

【问题讨论】:

  • 但是进入array[3][3]=0会占据一个位置,如果array[0][3]....array[2][3]!=0
  • 不清楚要检查什么,相同的长度还是相同数量的值?您的代码说明了一件事,但下面的文字说明了另一件事。

标签: java arrays


【解决方案1】:

(false 后缺少分号。) 您的代码是正确的。如果你通过了一个未知大小的int[][] a

boolean isRectangularMatrix(int[][] a) {
    int columnCount = 0; // Maybe interesting too.
    boolean rectangular = true;
    if (a.length != 0) {
        columnCount = a[0].length;
        for (int k = 1; k < a.length; k++) {
            if (a[k].length != columnCount) {
                //return false; // Or:
                rectangular = false;
                break;
            }
        }
    }
    return rectangular;
}

boolean isSquareMatrix(int[][] a) {
    int columnCount = 0; // Maybe interesting too.
    boolean square = true;
    if (a.length != 0) {
        columnCount = a[0].length;
        if (a.length != columnCount) {
            square = false;
        } else {
            for (int k = 1; k < a.length; k++) {
                if (a[k].length != columnCount) {
                    //return false; // Or:
                    square = false;
                    break;
                }
            }
        }
    }
    return square;
}

你不需要检查是否对应创建了数组:

int[][] a = new int[M][N];

【讨论】:

  • 谢谢,但不幸的是,这也不能完全奏效。对于 8 行 x 9 列矩阵,我是正确的。 int[][] numbers2 = {{5,3,4,6,7,8,9,1,2}, {6,7,2,1,9,5,3,4,8}, {1,9,8,3,4,2,5,6,7}, {8,5,9,7,6,1,4,2,3}, {4,2,6,8,5,3,7,9,1}, {7,1,3,9,2,4,8,5,6}, {9,6,1,5,3,7,2,8,4}, {2,8,7,4,1,9,6,3,5}};
  • @DaveTwickenham 我得到一个 8 行 x 9 列矩阵的正确性 那是因为它是正确的。你觉得应该是假的吗?如果你这样做了,为什么?
  • 如果你想要 square 矩阵,你也必须检查a.length == a[0].length。已添加
猜你喜欢
  • 2021-10-11
  • 2022-12-01
  • 1970-01-01
  • 2021-12-08
  • 2021-10-29
  • 2014-12-27
  • 2012-05-20
  • 2020-05-27
  • 1970-01-01
相关资源
最近更新 更多