我希望我的程序检查整个int[]
数组中的每个元素是否都非零。
我目前拥有的:
for(int i=0; i<myArray.length; i++)
{
if(myArray[i] == 0)
{
completed = false;
}
else
{
completed = true;
}
}
else statement
但是如果中间只有一个数组非零并且不会检查数组的其余部分,则循环会继续执行。
一旦找到 0,就需要让它跳出 for 循环:
if(myArray[i] == 0)
{
completed = false;
break;
}
这样,如果您稍后发现一个非 0 元素,您将不会错误地将已完成设置回 true。
您可以使用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
方法在内部执行相同的循环和比较。因此,我认为您的原始模式和新语法没有太大区别。虽然它可能会让你的代码看起来很紧凑。
你可以break;
在找到第一个 0 元素后放入语句,这样它就会跳出循环。
或者,你可以做
var completed = true;
for(int i=0; i<myArray.length; i++)
{
if(myArray[i] == 0)
{
completed = false;
}
}
哪个会做同样的事情。