我不明白这段代码。我的一个朋友以为我使用布尔值来使它工作。当他解释时,我真的不明白。为什么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;
}
}
答案 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;
}
}