我有以下伪码代码,带有4个开关块。在第四种情况下,我有if else条件,当某些条件满足时,我将列表大小减少1并且它必须再次返回到案例4并从第4个案例的开头执行。我试图在案例4中创建一个标签:但是它给出了编译错误。
switch(choice) {
case 1: /* do operations */
break;
case 2: /* do operations */
break;
case 3: /* do operations */
break;
case 4:
mylabel:
if(condition1) {
}
else if(condition2) {
}
else {
break mylabel;
}
break;
default :
}
上面的代码给出了编译错误。但我希望程序流程能够像这样。所以我尝试了以下代码:
switch(choice) {
case 1: /* do operations */
break;
case 2: /* do operations */
break;
case 3: /* do operations */
break;
case 4:
if(condition1) {
}
else if(condition2) {
}
else {
break case 4;
}
break;
default :
}
上面的代码仍然存在,我正面临编译问题。实现同样的目标是否有其他选择。在这里,我需要回到相同案例陈述的开头,我将从哪里开始。因此它是不同的。
答案 0 :(得分:1)
使用label和while循环。它会起作用
switch (choice) {
case 1: /* do operations */
break;
case 2: /* do operations */
break;
case 3: /* do operations */
break;
case 4:
mylabel:{
while(true){
if(condition1) {
}else if(condition2) {
}else {
break mylabel;// breaks the while-loop
}
}
}
default:
break;
}
答案 1 :(得分:0)
检查此链接: Break label in switch
答案 2 :(得分:0)
public void switchFunction(String choice){
switch(choice) {
case 1:
do1();
break;
case 2: /* do operations */
break;
case 3: /* do operations */
break;
case 4:
recursiveFunction();
break;
default :
}
}
public void recursiveFunction(){
if(condition1){
doSomething();
}
else if(condition2){
doSomethingElse();
}
else{
/* You can call it as much as you want! */
recursiveFunction();
} }