-1

我想打破一个 else if 条件,它有一个内部 if 条件,如果里面的内部 if 条件如下所示,请给我一个建议。

 if(condition1=true){

        }
    else if(condition2=true){

           if(condition3=true){

              do activity 1;
              //I want to break here if condition3 is true, without executing activity 2 & 3
            }

          do activity 2;
          do activity 3;

    }
4

7 回答 7

5
else if(condition2){
       if(condition3){
              do activity 1;
              //I want to break here if condition3 is true, without executing activity 2 & 3
        }
        else
        {
              do activity 2;
              do activity 3;
        }
}
于 2013-10-31T14:31:45.750 回答
1

在java中,你break只能在循环forwhileswitch/case或命名块中使用

但是如果你有方法void,你可以写return;

就像是:

void foo(){

if(condition1=true){

        }
    else if(condition2=true){

           if(condition3=true){

              do activity 1;

              return;
            }

          do activity 2;
          do activity 3;

    }
}
于 2013-10-31T14:31:25.867 回答
1

其他人已经通过重组区块来回答。如果不需要按顺序检查条件,您可以-

if(condition3=true){
    do activity 1;
} else if(condition2=true){
    do activity 2;
    do activity 3;
} else if(condition1=true){

}
于 2013-10-31T14:36:29.163 回答
0

事实上,我会尝试更容易阅读的方式:

if(condition1)
{

}
else if(condition2 && condition3) {
      do activity 1;

}
else if(condition2 && !condition3) {
      do activity 2;
      do activity 3;
}

这样你就可以避免嵌套的 if 并且让你的代码很容易阅读。

于 2013-10-31T14:37:29.280 回答
0

像这样的 if-else 模式强烈暗示有一些类结构来处理这些情况。

Activity activity = ActivityFactory.getActivity(conditionCause);
activity.execute();
于 2013-10-31T14:37:45.200 回答
0

好吧,你可以去else发表声明。

...
if(condition3=true){
    do activity 1;
} else {
    do activity 2;
    do activity 3;
}
...

或者,如果您愿意,您可以将整个代码块提取到一个单独的函数中,并让它在活动 1 之后立即返回。

我认为您也可以使用命名块:

...
doActivities:{
    if(condition3=true){
        do activity 1;
        break doActivities;
    } else {
        do activity 2;
        do activity 3;
    }
}
...

但是,这非常接近直接的 goto,可能不推荐使用。

于 2013-10-31T14:36:11.300 回答
0

没必要休息。这应该这样做。

if(condition1=true){

} else if(condition2=true){
    if(condition3=true){
        do activity 1;
        //I want to break here if condition3 is true, without executing activity 2 & 3
    } else {
        do activity 2;
        do activity 3;
    }
}
于 2013-10-31T14:36:30.543 回答