检查给定的矩阵是否具有有效尺寸-JAVA

问题描述 投票:0回答:2

我想检查给定的Matrix是否具有有效尺寸。下面的此矩阵具有Invalid Dim,因为它不满足Matrix属性

Matrix x = new Matrix(new double[][]{
                { 1.0, 2.0, 3.0},
                { 4.0, 5.0 }
        }) 

我尝试了几种方法,最新的是:

        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                if (array[i][j] = null) {
                    throw new InvalidDimensionsException("Invalid Dim");
                }
            }
        }

只是它不是null,那里没有元素!不幸的是,没有任何效果,我用尽了Idea。

我很高兴听到您的建议

提前感谢

java arrays matrix 2d
2个回答
0
投票

如果知道矩阵必须具有的列数,则可以检查内部每个一维数组的大小。

double[][] mat = ...; //get the underlying array from the matrix
for (double[] arr : mat) if (arr.length != numCols) throw new InvalidDimensionsException(...);

否则,您可以获取第一行的大小,并检查所有行的长度是否相同。

if (mat.length != 0) {
  int numCols = mat[0].length;
  for (int i = 1; i < mat.length; i ++)
    if (mat[i].length != numCols) throw new InvalidDimensionsException(...);
}

0
投票

[double[][]的像元不能为空,因此问题中的代码是没有意义的,尤其是因为它无法编译(=应该为==)。

要验证2D数组是矩形,即有效矩阵,请按照以下步骤操作:

double[][] matrix = {
        { 1.0, 2.0, 3.0},
        { 4.0, 5.0 }
};
int height = matrix.length;
if (height == 0)
    throw new InvalidDimensionsException("Invalid Dim");
int width = matrix[0].length;
if (width == 0)
    throw new InvalidDimensionsException("Invalid Dim");
for (int y = 1; y < height; y++)
    if (matrix[y].length != width)
        throw new InvalidDimensionsException("Invalid Dim");

代码将抛出NullPointerException的任何数组都是null

© www.soinside.com 2019 - 2024. All rights reserved.