如果声明/代码阻止,请转义?

时间:2015-06-29 00:54:16

标签: java

假设我有if块或任何代码块。有没有什么好方法可以逃脱剩下的块,比如继续循环?我知道goto在Java中已经不存在了。

示例代码:

if (sid > -1) {
    if (!godDamnDefunctGoto(session, sid)) {
        sid = -1;
    }else {
        vsid = true;
    }
}

当我能在这里运行我的支票时,无需调用方法。 方法godDamnDefunctGoto对我的sid& amp;会话变量。我不想通过将该方法的代码流中的返回重复代码重复代码。

这里的目标是在if语句之后运行一些代码,但是在运行之前还没有返回。如果我要内联Java方法,我必须多次运行它。也许Java应该实现inline关键字,类似于C?

3 个答案:

答案 0 :(得分:1)

您应该将if语句中的所有内容都写为函数,并在想要中断时返回。

让我们说下面的代码,如果是> 23你想"打破"

a = getUserInput();

if (a == 1) {

a = a * 23;
// some other stuff
  if(a > 23){ // you want to "break" if this is true
    System.out.println("break!!");
  }
// Do other stuff

System.out.println(a);

您可以将if代码放在函数中:

public void processA(Integer a){
  a = a * 23;
  // some other stuff
    if(a > 23){ // you want to "break" if this is true
      return;
    }
  // Do other stuff
}

然后,在您的代码中:

if (a == 1) {
  processA(a);
}

System.out.println(a);

这是你用方法做到的方法,没有办法打破我能想到的if循环。

如果你想将几个变量传递给函数,而不是让它取一个整数,那就让它取一个CustomObject,或者一个" bean"因为它已知(here is a tutorial)

public class CustomObject {     int intOne;     int intTwo;     int intThree;     //添加getter和setter }

答案 1 :(得分:1)

如果你想这样做

    L1: if (C1) {
        P1();
        if (C2)
            break L1;
        P2();
    }

你可以这样写

    while (C1) {
        P1();
        if (C2)
            break;
        P2();
        break;
    }

答案 2 :(得分:0)

只需使用带标签的break语句(是的, break 在没有进入循环的情况下工作)它在java中鲜为人知,因为它不是一个好的编程实践(它打破了Structured program theorem,就像 goto 语句一样)

如果您不相信我,只需编译并运行此代码:

public class Test {

    public static void main(String[] args) {

        boolean myCondition = false;

        MY_BLOCK: {
            System.out.println("1");
            System.out.println("2");
            System.out.println("3");
            System.out.println("4");

            if(!myCondition) break MY_BLOCK;

            System.out.println("5");
            System.out.println("6");
            System.out.println("7");
        }
        System.out.println("END");
    }
}