FOR循环中的布尔值

时间:2014-10-11 10:01:27

标签: java for-loop boolean

我不明白这段代码。我的一个朋友以为我使用布尔值来使它工作。当他解释时,我真的不明白。为什么found循环中的for

int id = input.nextInt();   
boolean found = false;
for (int i = 0; i < z && !found; i++){
    if (arr[i].getId() == id){
        found = true;
        index = i;
    }   
}

3 个答案:

答案 0 :(得分:1)

这里“布尔”用于在数组中找到输入的“id”后立即终止循环。好处是编译器不必搜索,直到找到“id”的最后一个索引。

答案 1 :(得分:1)

for循环中的条件语句读取

i < z && !found

当'found'为真时,for循环将停止循环。您可以阅读有关for for here

的更多信息

For循环语法如下所示:

for (initialize ; condition ; increment) {}

也可以用while循环替换你的for循环。

int i = 0;
int found = false;
while(i < z && !found) {
    if(arr[i].getId()==id){
        found = true;
        index = i;
    }
}

在这两种情况下,您都可以使用“break”关键字简化条件。 break关键字导致循环立即退出 。这可能是也可能不是适当的解决方案,但它确实显示了另一种处理这类循环的方法。

for(int i=0; i<z; i++){
    if(arr[i].getId()==id){
        index = i;
        break;
    }   
} 

答案 2 :(得分:0)

for循环的i<z && !found部分是条件,必须为true才能使循环继续。添加!found部分意味着当found为真或i>=z时,循环将终止,以先发生者为准。没有这种情况,即使在第一次迭代中找到匹配(即z),循环也总是运行arr[i].getId()==id次。因此,这种情况是一种减少循环运行时间的优化。

!found条件的替代方法是使用break关键字来终止循环:

            for(int i=0; i<z; i++){
                if(arr[i].getId()==id){
                    found = true;
                    index = i;
                    break;
                }   
            }