我目前正在学习功能并完成给定的任务:
"写一个函数eqarr,它接受两个int-arrays作为参数,如果它们相等则返回true,否则返回false;你的函数应该在每种情况下返回一个值(即使数组为空)"
我在检查数组是否为空时遇到问题。我让数组检查相互之间是否相等,但是如果是null则它是一个不同的问题。每当我尝试检查[i]是否等于null a[i] == null
时,我都会收到此错误error: bad operand types for binary operator '=='
。
我们无法使用现有功能。
任何帮助将不胜感激。
干杯
public class Week8Q5 {
public static boolean eqarr(int[] a, int[] b) {
for (int i = 0; i < a.length; i++) {
if (a[i] != b[i])
return false;
}
return true;
}
public static void main(String[] args) {
int[] a = { 5, 6, 7, 8 };
int[] b = { 5, 6, 7, 8 };
System.out.println(eqarr(a, b));
}
}
答案 0 :(得分:0)
检查数组是否为null,而不是
if(a[i] == null)
你应该做
if(a == null)
答案 1 :(得分:0)
使用a[i]
您正在访问阵列的元素。由于该数组定义为int[]
(即 primitive int values 的数组),因此它永远不会是null
。
但如果a
本身为null
,您当前的实施将失败,因此您应该检查:
public static boolean eqarr(int[] a, int[] b) {
if (a == null || b == null) {
// return appropriate value
}
}
“适当”取决于您。通常人们会希望该方法返回false
,如果其中一个数组是null
而另一个数组不是,true
它们都是null
。
请注意,您的代码存在其他问题。作为提示:尝试比较两个不同大小的数组。
答案 2 :(得分:0)
您可以使用条件arr
检查数组null
是否为arr == null
。
您可以按顺序执行以下检查以解决练习:
如果其中一个数组为false
而另一个数组不是{{p>
null
。
如果两个数组均为true
,则返回null
。
如果数组的长度不同,则返回false
。
如果任何元素不同,请返回false
。
如果您已达到此点(尚未从之前的任何检查中返回),请返回true
。
答案 3 :(得分:0)
问题明确指出,如果数组为null而不是它们包含的值,则应返回一个值。无论如何,基本类型int不能为null。
尝试类似:
public static boolean eqarr(int[] a, int[] b) {
if (a == null && b == null) {
return true;
}
if(!(a == null || b == null)) {
for (int i = 0; i < a.length; i++) {
if (a[i] != b[i])
return false;
}
return true;
}
return false;
}
答案 4 :(得分:0)
在不放弃太多的情况下,a[i]
表示数组的i
元素,a
表示数组本身。
您只能比较(例如!=
和==
)兼容数据类型的值。该错误消息源于尝试比较不兼容数据类型的值。