我希望我的程序检查整个int[]
数组中的每个元素是否都为非零。
我现在有什么:
for(int i=0; i<myArray.length; i++)
{
if(myArray[i] == 0)
{
completed = false;
}
else
{
completed = true;
}
}
但是如果中间只有一个数组非零并且不检查数组的其余部分,则循环继续执行else statement
。
答案 0 :(得分:4)
一旦找到0:
,你需要让它脱离for循环if(myArray[i] == 0)
{
completed = false;
break;
}
这样,如果您以后找到非0元素,则不会错误地将完成设置为true。
答案 1 :(得分:2)
您可以使用break
语句在第一次出现零值时中断循环:
boolean completed = true;
for(int i=0; i<myArray.length; i++) {
if(myArray[i] == 0) {
completed = false;
break;
}
}
if(!completed){
//array has zero values
}
其他重要提示:
Arrays.binarySearch():仅适用于已排序的数组,因此在您的情况下无效。
使用二进制搜索算法在指定的字节数组中搜索指定的值。在进行此调用之前,必须对数组进行排序(如sort(byte [])方法)。如果未排序,则结果未定义。如果数组包含多个具有指定值的元素,则无法保证找到哪个元素。
indexOf
方法在内部执行相同的循环和比较。所以我认为你的原始模式和新语法没有太大区别。虽然它可能会使您的代码看起来很紧凑。
答案 2 :(得分:0)
你可以在找到第一个0元素后放置break;
语句,这样它就会跳出循环。
答案 3 :(得分:0)
答案 4 :(得分:-1)
或者,您可以
var completed = true;
for(int i=0; i<myArray.length; i++)
{
if(myArray[i] == 0)
{
completed = false;
}
}
哪个会做同样的事情。