gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 02:16:21 25 4
gpt4 key购买 nike

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

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com