我不明白这段代码。我的一位朋友认为我使用布尔值来使其工作。我不明白他何时解释它。为什么循环中的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;
}
}
我不明白这段代码。我的一位朋友认为我使用布尔值来使其工作。我不明白他何时解释它。为什么循环中的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;
}
}
for循环的i<z && !found
部分是条件,为了循环继续,条件必须为真。添加!found
部件意味着当found
为true或i>=z
(无论哪个先发生)时,循环都会终止。没有这种条件,即使在第一次迭代中找到匹配(即arr[i].getId()==id
),循环总是会运行z
次。因此,这种情况是一种优化,可以缩短循环的运行时间。
到!found
条件的替代方案是用break
关键字来终止循环:
for(int i=0; i<z; i++){
if(arr[i].getId()==id){
found = true;
index = i;
break;
}
}
这里的“布尔”是用尽可能快的阵列中发现的输入的“ID”终止循环。好的是编译器不必搜索,直到找到最后一个索引为止的“id”。
里面的for循环的条件语句读取
i < z && !found
当“发现”是真实的,for循环将停止循环。你可以阅读更多有关循环here
For循环语法如下:
for (initialize ; condition ; increment) {}
也有可能取代你与while循环回路。
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;
}
}
谢谢你这么多埃兰爵士!起初它真的让人困惑。不知道for循环中找到的目的是什么。你现在更清楚了。哈哈* weeeee *! – topacoBoy 2014-10-11 10:11:57