需要数组,但 [ClassName] 找到 java

array required but [ClassName] found java

我正在尝试编写一个函数来检查 2 个数组是否相等。

public class DynamicArray {
    private int size; // stores the number of “occupied” elements in the array
    private int[] array; 

    ...

    boolean equals(DynamicArray obj) {
        boolean keepChecking = true;
        int objSize = 1;
        for (int i = 0; i < obj.length; i++) {
            if (obj[i] == 0 && keepChecking) {
                keepChecking = false;
                objSize = obj[i];
            }
        }

        if (size != objSize) 
            return false;

        for (int i = 0; i < size; i++) {
            if (array [i] != obj [i]) {
               return false;
            }
        }
        return true;
    }
}

问题是数组可能是部分填充的数组,未填充的元素将只是零。因此,要检查 2 个数组是否相等,首先,我找到占用数组的大小,然后进行所有检查。

所以,每次我尝试获取 obj[i] 或 obj.length 的值时,它都会显示错误 "array required, but DynamicArray found." for obj[i] 和 "cannot find symbol \n symbol: variable length \n location: variable obj of type DynamicArray" 这我不明白,因为另一个数组也是DynamicArray类型

public class ArrayDemo {

    public static void main(String[] args) {
        DynamicArray ar1 = new DynamicArray(1);
        DynamicArray ar2 = new DynamicArray(1);

        System.out.println("equals() is " + ar1.equals(ar2));
    }

}

问题是,DynamicArray 不是数组,它是一个 class,你必须定义一个 it.you 的长度函数才能调用 obj.length,这是 DynamicArray [=14] =] 没有方法 length

你的equals方法中的参数obj不是一个数组而是一个DynamicArray的实例。因此,您无法访问标识符 obj 上带有 [] 的值。您需要重写该方法。您还需要在 DynamicArray 对象中包含用于设置和获取数组元素的方法。例如:

val = ar1.get(0);

ar1.set(0, 值);

所以这意味着你的动态数组需要以下两种方法(我假设你的数组的值是整数,但这可以是任何东西)。我会让您了解其中的内容,因为我认为您一定是在学习这门语言。

public void set(int index, int value){
}

public int get(int index){
}

这样您就可以在重写的 equals 函数中使用您的方法来访问数组的元素。

另一个提示。您最好对两个数组进行排序。比较第一个或每个元素,然后比较下一个,然后再比较下一个,直到发现不匹配为止。那时你可以 return false。如果没有发现不匹配 return true.