检查给定矩阵是否具有有效维度-JAVA

检查给定矩阵是否具有有效维度-JAVA,java,arrays,matrix,2d,Java,Arrays,Matrix,2d,我想检查给定的矩阵是否具有有效的维度。 下面的矩阵具有无效的Dim,因为它不满足矩阵属性 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 <

我想检查给定的矩阵是否具有有效的维度。 下面的矩阵具有无效的Dim,因为它不满足矩阵属性

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");
                }
            }
        }
for(int i=0;i
只是它不是空的,它只是没有元素! 不幸的是,一切都不起作用,我也没办法了

我很高兴听到你的建议


提前感谢

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

double[][] mat = ...; //get the underlying array from the matrix
for (double[] arr : mat) if (arr.length != numCols) throw new InvalidDimensionsException(...);
否则,您可以获取第一行的大小,并检查所有行是否具有相同的长度

//If it's empty, there's no point checking further
if (mat.length != 0) {
  //All the rows should have this same length
  int numCols = mat[0].length;
  for (int i = 1; i < mat.length; i ++)
    if (mat[i].length != numCols) throw new InvalidDimensionsException(...);
}
//如果它是空的,则没有必要进一步检查
如果(材料长度!=0){
//所有行的长度都应该相同
int numCols=mat[0]。长度;
对于(int i=1;i
如果知道矩阵必须包含的列数,可以检查矩阵中每个一维数组的大小

double[][] mat = ...; //get the underlying array from the matrix
for (double[] arr : mat) if (arr.length != numCols) throw new InvalidDimensionsException(...);
否则,您可以获取第一行的大小,并检查所有行是否具有相同的长度

//If it's empty, there's no point checking further
if (mat.length != 0) {
  //All the rows should have this same length
  int numCols = mat[0].length;
  for (int i = 1; i < mat.length; i ++)
    if (mat[i].length != numCols) throw new InvalidDimensionsException(...);
}
//如果它是空的,则没有必要进一步检查
如果(材料长度!=0){
//所有行的长度都应该相同
int numCols=mat[0]。长度;
对于(int i=1;i
双[][]
的单元格不能为空,因此问题中的代码没有意义,特别是因为它没有编译(
=
应该是
=

要验证2D数组是否为矩形,即有效矩阵,请执行以下操作:

double[][]矩阵={
{ 1.0, 2.0, 3.0},
{ 4.0, 5.0 }
};
int height=matrix.length;
如果(高度==0)
抛出新的InvalidDimensionsException(“无效Dim”);
整数宽度=矩阵[0]。长度;
如果(宽度==0)
抛出新的InvalidDimensionsException(“无效Dim”);
对于(int y=1;y

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

双[][]
的单元格不能为null,因此问题中的代码没有意义,特别是因为它没有编译(
=
应该是
=

要验证2D数组是否为矩形,即有效矩阵,请执行以下操作:

double[][]矩阵={
{ 1.0, 2.0, 3.0},
{ 4.0, 5.0 }
};
int height=matrix.length;
如果(高度==0)
抛出新的InvalidDimensionsException(“无效Dim”);
整数宽度=矩阵[0]。长度;
如果(宽度==0)
抛出新的InvalidDimensionsException(“无效Dim”);
对于(int y=1;y

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

无效部分是:{1.0,2.0,3.0},{4.0,5.0,x},其中x应该有一个元素,否则它的无效矩阵Dim所有行和列必须包含一个元素无效部分是:{1.0,2.0,3.0},{4.0,5.0,x}其中x应该有一个元素,否则它是无效的矩阵Dim所有行和列必须包含一个元素此代码有效,但空矩阵有效。可以有0x0、10x0、0x5的矩阵,etc@user这是OP决定A是否被认为是有效的,并相应地调整此处显示的代码防止异常,但OP可以根据需要选择不同的操作。好吧。我假设OP将使用数学定义,但我猜它们的特定用例可能会有所不同。此代码有效,但空矩阵有效。可以使用0x0、10x0、0x5的矩阵,etc@user这是由OP决定是否将某个对象视为valid,并相应地调整此处显示的代码。必须测试零的高度以防止异常,但OP可以根据需要选择不同的操作。好吧。我假设OP将使用数学定义,但我猜他们的具体用例可能不同