到目前为止我的版本:
boolean isEmpty(int[]arr) {
for(int i=0; i<arr.length; i++)
if(arr[i] != 0) {
return false;
}
return true;
}
我已经改变了,但仍然无法正常工作......那么应该怎么写呢?
答案 0 :(得分:1)
a = 0
错误,因为a
是一个int
数组。你可能正在寻找一个计数器变量。它可能是这样的:
boolean existsData = false;
for(int i=0; i<arr.length; i++)
//arr[i] = 0 means assign 0 to arr[i]
//note that I'm using different (!=)
existsData = (arr[i] != 0);
if (existsData) {
break;
}
}
return existData;
或者更简单,不使用boolean
变量:
for(int i=0; i<arr.length; i++)
if (arr[i] != 0) {
return false;
}
}
return true;
或者,如果你的意思是数组中没有元素,而不是“没有0元素”:
boolean isEmpty(int[] arr) {
return arr.length == 0;
}
答案 1 :(得分:1)
a
是一个int
的数组,它本身不是int
...
int[]a = new[a.length];
无效,因为a
尚未宣布......
a=0;
无效,因为a
是一个int
的数组而不是int
本身,它是一个不同的类型......
if(a[i] = 0)
是一项任务,意味着您将值0
分配给a[i]
(或a
数组中的第n个位置)
但是,即使比较正确,您的方法也不太可能返回有效值...例如......
if(a[i] == 0)
y=true;
else
y=false;
如果数组{1, 0}
中有两个元素,则您的方法将返回true
,但如果它们有{0, 1}
,则会返回false
...
只要找到不是0
的单个值,就应该break
离开循环并返回适当的响应(在这种情况下为false
)
您根本不需要a
。您应该使用arr
,这是您要检查的实际数组...
我还强烈建议您在块周围使用{...}
...它会让你的代码读得更简单,例如......
for(int i=0; i<a.length; i++) {
if(a[i] = 0) {
y=true;
} else {
y=false;
}
}
return y;
现在显而易见的是调用return
语句的位置;)
答案 2 :(得分:0)
在您的代码中存在以下错误:
第2行:int [] a = new [a.length]; 在减速之前你不能使用a.length ...我认为它是arr.length();
第3行:a = 0; 这里a不是变量..a是数组的引用,所以你不能设置它的值0 ... 你可以设置为[0] = 0;,a [1] = 0; 或者你可以设置a = null;
第5行:if(a [i] = 0)