我们可以在开关盒java里面贴标签

时间:2017-01-28 04:29:49

标签: java switch-statement label conditional break

我有以下伪码代码,带有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 : 
  }

上面的代码仍然存在,我正面临编译问题。实现同样的目标是否有其他选择。在这里,我需要回到相同案例陈述的开头,我将从哪里开始。因此它是不同的。

3 个答案:

答案 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();

} }

相关问题