如何检查整个阵列?

时间:2012-12-23 06:47:10

标签: java arrays

我希望我的程序检查整个int[]数组中的每个元素是否都为非零。

我现在有什么:

for(int i=0; i<myArray.length; i++)
{
  if(myArray[i] == 0)
  {
    completed = false;
  }
  else
  {
    completed = true;
  }
}

但是如果中间只有一个数组非零并且不检查数组的其余部分,则循环继续执行else statement

5 个答案:

答案 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
 }

其他重要提示:

  1. Arrays.binarySearch():仅适用于已排序的数组,因此在您的情况下无效。

      

    使用二进制搜索算法在指定的字节数组中搜索指定的值。在进行此调用之前,必须对数组进行排序(如sort(byte [])方法)。如果未排序,则结果未定义。如果数组包含多个具有指定值的元素,则无法保证找到哪个元素。

  2. indexOf方法在内部执行相同的循环和比较。所以我认为你的原始模式和新语法没有太大区别。虽然它可能会使您的代码看起来很紧凑。

答案 2 :(得分:0)

你可以在找到第一个0元素后放置break;语句,这样它就会跳出循环。

答案 3 :(得分:0)

无需遍历每个元素: JSBIN Demo

使用IndexOf();

var myArray = [1,2,1,3];
var completed = myArray.indexOf(0) != -1

答案 4 :(得分:-1)

或者,您可以

var completed = true;
for(int i=0; i<myArray.length; i++)
{
   if(myArray[i] == 0)
   {
       completed = false;
   }
}

哪个会做同样的事情。