我想检查给定的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。
我很高兴听到您的建议
提前感谢
如果知道矩阵必须具有的列数,则可以检查内部每个一维数组的大小。
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(...);
}
[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
。