如果第一个“如果条件”为真,如何阻止执行其他“如果条件”执行

时间:2018-02-25 17:57:14

标签: java android for-loop if-statement

它一直困扰我一天,我不知道该怎么做,因为我还是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");
                    }
                }
            }
        }

4 个答案:

答案 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 statementhttps://www.geeksforgeeks.org/decision-making-javaif-else-switch-break-continue-jump/

中看到更多内容

我希望能帮到你