我正在尝试编写一个函数来检查两个数组是否相等。
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;
}
}
问题是数组可能是部分填充的数组,未填充的元素将只是零。因此,为了检查两个数组是否相等,我首先找到占用数组的大小,然后进行所有检查。
因此,每次我尝试获取 obj[i] 或 obj.length 的值时,它都会显示错误“需要数组,但找到了 DynamicArray”。对于 obj[i] 和“找不到符号\n 符号:可变长度\n 位置:DynamicArray 类型的变量 obj”,我不明白,因为另一个数组也是 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));
}
}
最佳答案
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 函数中使用您的方法来访问数组的元素。
另一个提示。你最好对两个数组进行排序。比较第一个元素或每个元素,然后比较下一个元素,然后再比较下一个元素,直到发现不匹配。那时你可以返回 false。如果没有发现不匹配,则返回 true。
关于java - 需要数组,但 [ClassName] 找到了 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49268924/