1

我有一个非常笨拙的方法来做到这一点。但想找出一种更精简的循环方法。我想遍历我的数组,并测试每个元素都高于某个值。在这种情况下说,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;
  }
}
4

3 回答 3

7

由于您的迭代变量被调用k,您可以检查k数组中的第 th 个元素是否 >= 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;
   }
} 
于 2013-11-06T13:17:30.720 回答
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
}
于 2013-11-06T13:24:07.127 回答
-1

这样做

boolean found0 = true;
for (int k:array){
    if (!(k >= 50)){
       found0 = false;  
       break;        
    }
}
于 2013-11-06T13:18:30.537 回答