假设我有if块或任何代码块。有没有什么好方法可以逃脱剩下的块,比如继续循环?我知道goto在Java中已经不存在了。
示例代码:
if (sid > -1) {
if (!godDamnDefunctGoto(session, sid)) {
sid = -1;
}else {
vsid = true;
}
}
当我能在这里运行我的支票时,无需调用方法。 方法godDamnDefunctGoto对我的sid& amp;会话变量。我不想通过将该方法的代码流中的返回重复代码重复代码。
这里的目标是在if语句之后运行一些代码,但是在运行之前还没有返回。如果我要内联Java方法,我必须多次运行它。也许Java应该实现inline关键字,类似于C?
答案 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");
}
}