迭代一个数组,测试每个元素是否大于某个数字

时间:2013-11-06 13:16:27

标签: java arrays

我有一个非常笨重的方法来做到这一点。但是想找出一个更精简的循环方法。我想通过我的数组,并测试每个元素是否高于某个值。在这种情况下说,50。

继承我所拥有的:

boolean found0 = false;
for (int k = 0; k < array.length ; k++) {
  if (array[0] >= 50 &&
      array[1] >= 50 &&
      array[2] >= 50 &&
      array[3] >= 50 &&
      array[4] >= 50 &&
      array[5] >= 50) {
    found0 = true;
  }
}

3 个答案:

答案 0 :(得分:7)

由于您的迭代变量名为k,因此您可以检查数组中k元素的&gt; = 50.

如果某些数组元素小于50,我们可以将标志设置为false并打破循环。

boolean ok = false;
for (int k = 0; k < array.length ; k++) {
    if (array[k] >= 50) {
        ok = true;     
    } else {
        ok = false;
        break; //Break the loop, because we have at least one, which is < 50
    }
}

更好的是,我们可以缩短if/else语句并检查我们是否至少有一个元素,小于50。

boolean ok = true;
for (int k = 0; k < array.length; k++) {
   if (array[i] < 50) {
       ok = false;
       break;
   }
} 

答案 1 :(得分:1)

这些类型的测试最好封装在一个方法中。您可以使用简单的“for each”循环:

private boolean areAllElementsAtLeast(int[] array, int value) {
    for(int i : array) {
        if (i < value) {
            return false;
        }
    }
    return true;
}

对于您的示例,您可以这样称呼它:

if (areAllElementsAtLeast(array, 50)) {
    // All elements in the array are >= 50
}

答案 2 :(得分:-1)

这样做

boolean found0 = true;
for (int k:array){
    if (!(k >= 50)){
       found0 = false;  
       break;        
    }
}