Java 将函数中的数组与空值进行比较
我目前正在学习函数并完成给定任务: 编写一个函数eqarr,它接受两个int数组作为参数,如果它们相等,则返回true;否则返回false;您的函数在任何情况下都应返回一个值(即使数组为null) 我在检查数组是否为空时遇到问题。我让数组检查数组之间是否相等,但是对于null则是另一个问题。每当我尝试检查a[i]是否等于nullJava 将函数中的数组与空值进行比较,java,arrays,function,null,Java,Arrays,Function,Null,我目前正在学习函数并完成给定任务: 编写一个函数eqarr,它接受两个int数组作为参数,如果它们相等,则返回true;否则返回false;您的函数在任何情况下都应返回一个值(即使数组为null) 我在检查数组是否为空时遇到问题。我让数组检查数组之间是否相等,但是对于null则是另一个问题。每当我尝试检查a[i]是否等于nulla[i]==null,我都会得到这个错误错误:二进制运算符“==”的操作数类型错误 我们不能使用现有的函数 任何帮助都将不胜感激 干杯 public class Week
a[i]==null
,我都会得到这个错误错误:二进制运算符“==”的操作数类型错误
我们不能使用现有的函数
任何帮助都将不胜感激
干杯
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));
}
}
public class Week8Q5{
公共静态布尔eqarr(int[]a,int[]b){
for(int i=0;i
使用a[i]
您正在访问数组的一个元素。由于该数组被定义为int[]
(即的数组),因此它永远不会是null
但是如果a
本身为null
,则当前实现将失败,因此您应该检查:
public static boolean eqarr(int[] a, int[] b) {
if (a == null || b == null) {
// return appropriate value
}
}
在哪里“合适”取决于你。通常,如果其中一个数组为null
,而另一个数组不是,那么人们会期望该方法返回false
,而true
这两个数组都是null
请注意,您的代码还有另一个问题。提示:尝试比较两个大小不同的数组。使用
a[i]
您正在访问数组的一个元素。由于该数组被定义为int[]
(即的数组),因此它永远不会是null
但是如果a
本身为null
,则当前实现将失败,因此您应该检查:
public static boolean eqarr(int[] a, int[] b) {
if (a == null || b == null) {
// return appropriate value
}
}
在哪里“合适”取决于你。通常,如果其中一个数组为null
,而另一个数组不是,那么人们会期望该方法返回false
,而true
这两个数组都是null
请注意,您的代码还有另一个问题。提示:尝试比较两个大小不同的数组。您可以使用条件
arr==null
检查数组arr
是否为null
可以按顺序执行以下检查以解决此练习:
- 如果其中一个数组为
而另一个不为null,则返回null
false
- 如果两个数组均为
,则返回null
true
- 如果数组的长度不同,则返回
false
- 如果任何元素不同,则返回
false
- 返回
如果您已到达此点(未从任何早期检查返回)true
arr==null
检查数组arr
是否为null
可以按顺序执行以下检查以解决此练习:
- 如果其中一个数组为
而另一个不为null,则返回null
false
- 如果两个数组均为
,则返回null
true
- 如果数组的长度不同,则返回
false
- 如果任何元素不同,则返回
false
- 返回
如果您已到达此点(未从任何早期检查返回)true
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;
}
公共静态布尔eqarr(int[]a,int[]b){
如果(a==null&&b==null){
返回true;
}
如果(!(a==null | | b==null)){
for(int i=0;i
问题明确指出,如果数组为空,而不是它们包含的值,则应返回一个值。基元类型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;
}
公共静态布尔eqarr(int[]a,int[]b){
如果(a==null&&b==null){
返回true;
}
如果(!(a==null | | b==null)){
for(int i=0;i在不放弃太多的情况下,a[i]
表示数组的i
第个元素,a
表示数组本身
您只能比较兼容数据类型的值(例如,!=
和=
)。错误消息源于试图比较不兼容数据类型的值。在不透露太多信息的情况下,a[i]
表示数组的i
第个元素,a
表示数组本身
您只能比较兼容数据类型的值(例如,!=
和=
)。错误消息源于试图比较不兼容数据类型的值。如果(a==null&&b==null)返回true,则在循环之前执行这些检查;如果(a==null | | b==null)返回false;如果(a.length!=b.length)返回false如果(a==null&&b==null)返回true,则在循环之前执行这些检查;如果(a==null | | b==null)返回false;如果(a.length!=b.length)返回false代码>