簡體   English   中英

如果第一個“如果條件”為真,如何阻止其他“其他條件”執行

[英]How to stop other "else if conditions" from executing if 1st "if condition" is true

它已經困擾我一天了,我不知道該怎么做,因為我還是 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");
                    }
                }
            }
        }

您應該添加一些標簽:

outerloop:
for(findpet_getItems items:arrayList) {
        for(int i=0; i <arrayList.size();i++) {
            ...
                    break outerloop;
            ...

        }
    }

results.setText("Search not found"); 應該從這些循環中移出

嘗試使用早期回報。 通常模式將是

method() {
    if (condition) { block1; }
    else if (condition2) { block2; }
    else { block3; }
    return;
}

嘗試使用提前返回,使示例看起來更像:

method() {
  if(condition) { block1; return; }
  if(condition2) { block2; return; }
  block3; return; 
}

這是因為你的邏輯看起來是錯誤的:

這是說明如果我不是 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 變為真,然后向下遵循流程:

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;
        }
    }

在情況下,如果你想打破循環,你可以使用:

break;

喜歡:

if(true) break;

或者,如果您想跳轉 de 條件並繼續循環,您可以使用:

continue;

喜歡:

if(true) continue;

您會在以下內容中看到更多信息: break 和 continue 語句之間的區別https://www.geeksforgeeks.org/decision-making-javaif-else-switch-break-continue-jump/

我希望能幫助你

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM