我目前正在学习函数并有给定的任务:
"编写一个函数 eqarr,它接受两个 int-array 作为参数,如果它们相等,则返回 true,否则返回 false;你的函数应该在每种情况下都返回一个值(即使数组为 null)">
我在检查数组是否为空时遇到问题。我正在让数组检查它们是否彼此相等,但对于 null,这是一个不同的问题。每当我尝试检查 a[i] 是否等于空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));
}
}
使用a[i]
,您正在访问数组的元素。由于该数组被定义为int[]
(即原始整数值的数组),因此它永远不会null
。
但是,如果a
本身是null
,则您当前的实现将失败,因此您应该检查:
public static boolean eqarr(int[] a, int[] b) {
if (a == null || b == null) {
// return appropriate value
}
}
"适当"的地方取决于您。通常,如果其中一个数组null
而另一个数组不是,并且true
它都是null
的,则人们会期望该方法返回false
。
请注意,您的代码还有另一个问题。提示:尝试比较两个不同大小的数组。
您可以使用条件arr == null
检查数组arr
是否null
。
您可以按顺序执行以下检查以解决练习:
如果其中一个数组
。null
而另一个数组未false
则返回如果两个数组都
null
,则返回true
。如果数组的长度不同,则返回
false
。如果任何元素不同,则返回
false
。如果您已到达此点,则返回
true
(尚未从任何早期检查中返回)。
这个问题明确指出,如果数组为 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;
}
在不透露太多的情况下,a[i]
表示数组的第i
个元素,a
表示数组本身。
您只能比较(例如!=
和==
) 兼容数据类型的值。错误消息源自尝试比较不兼容数据类型的值。