我是一个初学者,尝试用 Java 编写一个函数,如果两个传递的 int
类型的二维数组在每个维度上的大小都相同,并且 返回
否则。要求是,如果两个数组都是 true
>falsenull
,则应返回 true
。如果一个是 null
而另一个不是,您应该返回 false
。
我的代码以某种方式出错:
public static boolean arraySameSize(int[][] a, int[][] b) {
if (a == null && b == null) {
return true;
}
if (a == null || b == null) {
return false;
}
if (a.length == b.length) {
for (int i = 0; i < a.length; i++) {
if (a[i].length == b[i].length) {
return true;
}
}
}
return false;
}
如有任何帮助,我们将不胜感激!
编辑:问题是“运行时错误:空”
最佳答案
您的逻辑看起来几乎准确无误。我看到的唯一问题是处理两个数组都不为 null 和 具有相同第一维的情况的逻辑。如果任何索引没有匹配的长度,您应该返回 false:
public static boolean arraySameSize(int[][] a, int[][] b) {
if (a == null && b == null) {
return true;
}
if (a == null || b == null) {
return false;
}
if (a.length != b.length) {
return false;
}
// if the code reaches this point, it means that both arrays are not
// null AND both have the same length in the first dimension
for (int i=0; i < a.length; i++) {
if (a[i] == null && b[i] == null) {
continue;
}
if (a[i] == null || b[i] == null) {
return false;
}
if (a[i].length != b[i].length) {
return false;
}
}
return true;
}
按照下面的演示链接查看此方法正常工作的一些示例。
Demo
关于java - 如何在 Java 中比较两个二维数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52410138/