它一直困扰我一天,我不知道该怎么做,因为我还是java和android的新手。我有这个代码在for循环中有一个if和else if语句。现在的问题是,如果第一个条件为真,它也将执行第一个下面的另一个条件,这不是我想要的。我想在上述条件为真时停止循环并退出。
所以任何人都可以告诉我出了什么问题。
for(findpet_getItems items:arrayList)
{
for(int i=0; i <arrayList.size();i++)
{
if(i !=0){
if (items.getHair().toLowerCase().contains(hair) && items.getColor().toLowerCase().contains(color)
&& items.getSize().toLowerCase().contains(size) && items.getWeight().toLowerCase().contains(weight)
) {
new_list.add(items);
break;
}
else if (items.getSize().toLowerCase().contains(size) && items.getWeight().toLowerCase().contains(weight)) {
new_list.add(items);
break;
}
else if (items.getHair().toLowerCase().contains(hair) && items.getColor().toLowerCase().contains(color)) {
new_list.add(items);
break;
}
else {
results.setText("Search not found");
}
}
}
}
答案 0 :(得分:0)
您应该添加一些标签:
outerloop:
for(findpet_getItems items:arrayList) {
for(int i=0; i <arrayList.size();i++) {
...
break outerloop;
...
}
}
results.setText("Search not found");
应移出这些循环
答案 1 :(得分:0)
尝试使用早期退货。模式通常是
method() {
if (condition) { block1; }
else if (condition2) { block2; }
else { block3; }
return;
}
尝试使用提前返回,因此示例看起来更像:
method() {
if(condition) { block1; return; }
if(condition2) { block2; return; }
block3; return;
}
答案 2 :(得分:0)
这是因为你的逻辑看起来错了:
这说明如果我不是0,那么这样做,精灵等。
但是,看看这里的逻辑:
for(**int i=0**; i <arrayList.size();i++)
{
i**f(i !=0**){
if (items.getHair().toLowerCase().contains(hair) && items.getColor().toLowerCase().contains(color)
&& items.getSize().toLowerCase().contains(size) && items.getWeight().toLowerCase().contains(weight)
)
{
new_list.add(items);
break;
}
我将在循环的第一次迭代中始终为0,因此不会执行任何操作,然后它变为1,因此if变为true,然后跟随流向下:
if (items.getHair().toLowerCase().contains(hair) && items.getColor().toLowerCase().contains(color)
&& items.getSize().toLowerCase().contains(size) && items.getWeight().toLowerCase().contains(weight)
)
{
new_list.add(items);
break;
}
else if (items.getSize().toLowerCase().contains(size) && items.getWeight().toLowerCase().contains(weight)) {
new_list.add(items);
break;
}
else if (items.getHair().toLowerCase().contains(hair) && items.getColor().toLowerCase().contains(color)) {
new_list.add(items);
break;
}
else {
results.setText("Search not found");
}
}
所以,它向后,将逻辑更改为更像:
or(findpet_getItems items:arrayList)
{
for(int i=0; i <arrayList.size();i++)
{
if(i =0){
if (items.getHair().toLowerCase().contains(hair) && items.getColor().toLowerCase().contains(color)
&& items.getSize().toLowerCase().contains(size) && items.getWeight().toLowerCase().contains(weight)
)
{
new_list.add(items);
break;
}
else if (items.getSize().toLowerCase().contains(size) && items.getWeight().toLowerCase().contains(weight)) {
new_list.add(items);
break;
}
else if (items.getHair().toLowerCase().contains(hair) && items.getColor().toLowerCase().contains(color)) {
new_list.add(items);
break;
}
else {
results.setText("Search not found");
}
}else break;
}
}
答案 3 :(得分:0)
如果您想打破循环,可以使用:
break;
像:
if(true) break;
或者,如果你想跳转条件并继续循环,你可以使用:
continue;
像:
if(true) continue;
您可以在Difference between break and continue statement或https://www.geeksforgeeks.org/decision-making-javaif-else-switch-break-continue-jump/
中看到更多内容我希望能帮到你