在 Java 中比较两个整数数组

2022-09-01 13:28:46

我正在尝试编写代码来比较两个数组。在第一个数组中,我放置了自己的数字,但第二个数组从输入文件中获取数字。此数组的大小由文件中的第一个数字确定,而第一个数组的大小始终为 10。两个数组的长度以及数字必须相同。

我的代码如下:

public static void compareArrays(int[] array1, int[] array2) {
    boolean b = false;
    for (int i = 0; i < array2.length; i++) {

        for (int a = 0; a < array1.length; a++) {

            if (array2[i] == array1[a]) {
                b = true;
                System.out.println("true");
            } else {
                b = false;
                System.out.println("False");
                break;
            }
        }
    }       
}

答案 1

从我所看到的,你只是试图看看它们是否相等,如果这是,就用这样的东西:true

boolean areEqual = Arrays.equals(arr1, arr2);

这是这样做的标准方法。

请注意,数组也必须排序才能被视为相等,来自 JavaDoc:

如果两个数组包含相同数量的元素,并且两个数组中所有对应的元素对都相等,则认为两个数组相等。换句话说,如果两个数组以相同的顺序包含相同的元素,则它们相等。

很抱歉错过了。


答案 2

使用
// 返回布尔值Arrays.equals(ary1,ary2);

编辑
,你也可以用来比较2D数组Arrays.deepEquals(ary1,ary2)

还要检查此链接,了解 和 之间的比较比较Arrays.equls(ar1,ar2)Arrays.deepEquals(ar1,ar2)

Java Arrays.equals() 为二维数组返回 false

EDIT 2
如果您不想使用这些库方法,那么您可以轻松实现您的方法,如下所示:

public static boolean ArrayCompare(int[] a, int[] a2) {
    if (a==a2)   // checks for same array reference
        return true;
    if (a==null || a2==null)  // checks for null arrays
        return false;

    int length = a.length;
    if (a2.length != length)  // arrays should be of equal length
        return false;

    for (int i=0; i<length; i++)  // compare array values
        if (a[i] != a2[i])
            return false;

    return true;
}