java - 如何在 Java 中比较两个二维数组?

标签 java arrays for-loop multidimensional-array

我是一个初学者,尝试用 Java 编写一个函数,如果两个传递的 int 类型的二维数组在每个维度上的大小都相同,并且 返回 true >false 否则。要求是,如果两个数组都是 null,则应返回 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/

相关文章:

java - for循环后返回

c++ - 使用 C++11 auto 的 Wunused-but-set-variable 警告

java - Context.startForegroundService() 然后没有调用 Service.startForeground() 问题

java - 如何从根目录加载属性文件?

java - 将数据插入二维 byte[] 数组

c - 删除排序数组中的 double ,然后将 X 放在最后

java - 循环内的递归方法

java - 如何在 JavaFX 中传递参数

java - 如何围绕整个对象设置上下文菜单

值 > 128 的 Java 字符集编码