2017-01-28 1 views
1

스위치 블록이 4 개인 경우 아래의 의사 코드가 있습니다. 네 번째 경우에는 다른 조건이 있고 조건이 충족 될 때 목록 크기를 1 줄이고 케이스 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 : 
    } 

위 코드는 여전히 컴파일 문제에 직면하고 있습니다. 같은 목표를 달성하기위한 대안이 있습니까? 여기에서 나는 똑 같은 사례 진술의 시작 부분으로 되돌아 가야한다. 그러므로 그것은 다릅니다.

+2

'do {...} while (cond)'루프에'case 4' 코드를 래핑하면됩니다. – AJNeufeld

답변

1

사용 레이블과 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; 
    } 
+0

나는이 솔루션으로 라벨로 돌아갈 수 있었다. 하지만 라벨 안에 루프를 넣지 않고했습니다. 감사합니다 –

+0

오신 것을 환영합니다, 당신은 또한 루프없이 할 수 있습니다. –

0

확인이 링크 아웃 : Break label in switch

+1

질문을 중복으로 표시하거나 현재 유스 케이스에 대한 링크의 콘텐츠를 공유 할 수 있습니다. – nullpointer

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

} }