Java 如果第一个“如果条件”为真,如何停止其他“如果条件”的执行
这已经困扰了我一天了,我不知道该怎么做,因为我还是java和android新手。我的代码在for循环中有if和elseif语句。现在的问题是,如果第一个条件为真,它也会在第一个条件下执行另一个条件,这不是我想要的。当上述条件为真时,我想停止循环并退出它 谁能告诉我出了什么问题吗Java 如果第一个“如果条件”为真,如何停止其他“如果条件”的执行,java,android,for-loop,if-statement,Java,Android,For Loop,If Statement,这已经困扰了我一天了,我不知道该怎么做,因为我还是java和android新手。我的代码在for循环中有if和elseif语句。现在的问题是,如果第一个条件为真,它也会在第一个条件下执行另一个条件,这不是我想要的。当上述条件为真时,我想停止循环并退出它 谁能告诉我出了什么问题吗 for(findpet_getItems items:arrayList) { for(int i=0; i <arrayList.size();i++)
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.setTextSearch未找到;应该移出这些循环尝试使用早期返回。通常情况下,这种模式是
method() {
if (condition) { block1; }
else if (condition2) { block2; }
else { block3; }
return;
}
尝试使用提前返回,使示例看起来更像:
method() {
if(condition) { block1; return; }
if(condition2) { block2; return; }
block3; return;
}
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;
}
}
这是因为你的逻辑看起来是错误的: 这是说如果我不是0,那么就这样做,elf等等 但是,看看这里的逻辑:
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;
}
因此,它是反向的,将逻辑更改为更类似于:
method() {
if(condition) { block1; return; }
if(condition2) { block2; return; }
block3; return;
}
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;
continue;
比如:
或者,如果要跳转de条件并继续循环,可以使用:
break;
continue;
比如:
你会从中看到更多:或者
我希望能帮助你第一件事:现在就做一个句号。而不是试图同时学习两个复杂的东西java和android!您应该首先关注基本java。然后:避免编写这样的代码-它已经过于复杂了。。。我们可以坐下来,花一个小时左右的时间讨论如何改进这个复杂的代码。但这并不是它的本意。因此:首先问问自己,为什么这里有两个循环,外部循环似乎足够了,为什么引入了内部循环。。。但永远不要使用那个参数?!不,OP应该退后一步,考虑他真正想要做的事情。可能标记的循环/中断会修复该症状。但问题是,他很可能不知道自己在做什么,也不知道如何以理智的方式去做。所以是的,你的答案在某种程度上解决了直接的问题-但它完全忽略了OP很好的部分,不知道他在做什么。是的,他应该首先理解这个问题,我不确定在这个问题中提出的示例代码。但如果他需要一个停止的方法,那么就在这里。这就是重点:我们不知道他想要什么。当问题质量不高时,你的答案应该非常清晰,以弥补这一点。。。