需要数组,但 [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.
我正在尝试编写一个函数来检查 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.