JAVA异常与阵列
问题描述:
我有这种方法,它采用二维数组的两个实例将它们添加在一起,并将总和存储在一个新的数组中,两个数组必须具有相同的大小,例如。(相同的行和列号)如果不是,它应该抛出我定义的异常。我的方法抛出异常只有当第一个数组具有不同数量的行而不是列时,例如只有当我传递这些数组时,才会抛出异常:a [4] [4] b [5] [4]但不是这些数组:a [4] [5] b [4] [5],有人可以解释什么是happing?我正在以正确的方式抛出异常?JAVA异常与阵列
public int[][] add(int[][] a, int[][] b) throws IncompatibleArgumentsException {
int[][] sum = new int[a.length][b.length];
if (a.length == b.length) {
System.out.println("The Sum of the arrays is: ");
System.out.println(" --------------- ");
for (int row = 0; row < a.length; row++) {
for (int col = 0; col < b.length; col++) {
sum[row][col] = a[row][col] + b[row][col];
System.out.println(" | " + a[row][col] + " + " + b[row][col] + " = " + sum[row][col] + " | ");
System.out.println(" --------------- ");
}
}
} else {
throw new IncompatibleArgumentsException("Arrays have different size");
}
return sum;
}
,这是怎么了调用该方法:
public Implementation() {
int[][] x = new int[1][1];
x[0][0] = 1;
int[][] y = new int[1][2];
y[0][0] = 1;
y[0][1] = 3;
add(x, y);
}
答
“a.length
”给你的行数本质上是一个2-d数组是1-d数组的数组,所以a.'length”只会给你'a'中一维数组的数量。为了匹配列的数量,你需要找出在a
的单个一维数组中有多少个元素,因此a[0].length
(其中a [0] = a中的第0个1-d数组)会给出数字列。
那么,你只会抛出一个异常,如果a.length!= a [0] .length。所以你甚至不会比较两个外部数组的大小。只有第一个数组的行数等于第一行的列数。您需要比较两个数组的行数和两个数组中所有行的元素数。我也不明白为什么结果数组被初始化为新的int [a.length] [b.length]。 –
@controlaltdel但它返回的总和,这里是控制台结果:数组的总和是: --------------- | 1 + 1 = 2 | --------------- – Khaled
@Khaled我道歉。我在想,“第二个案例不应该引起例外......”但这不是我写的。在任何情况下,它似乎与你找到的 – ControlAltDel