[英]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.