2013-10-31 4 views
-1

내부 if 조건이있는 조건에서 else if 조건을 벗어나고 싶다면, 내부 if 조건이 아래처럼 참이된다면 나에게 제안 해주세요.다른 조건을 깨는 방법

자바에서
if(condition1=true){ 

     } 
    else if(condition2=true){ 

      if(condition3=true){ 

       do activity 1; 
       //I want to break here if condition3 is true, without executing activity 2 & 3 
      } 

      do activity 2; 
      do activity 3; 

    } 
+3

return ...; –

+0

'='은 예를 들어'=='(예 : 존재하지 않아야 함)가 아니기를 바랍니다. – Maroun

+0

@MarounMaroun 단지'if (conditionN)' – nachokk

답변

5
else if(condition2){ 
     if(condition3){ 
       do activity 1; 
       //I want to break here if condition3 is true, without executing activity 2 & 3 
     } 
     else 
     { 
       do activity 2; 
       do activity 3; 
     } 
} 
1

만 루프 for 또는 while 또는 switch/case 또는 명명 된 블록

break를 사용하지만 할 수 있습니다 당신은 당신이 쓸 수 void 방법이있는 경우 return;

뭔가 같은 :

void foo(){ 

if(condition1=true){ 

     } 
    else if(condition2=true){ 

      if(condition3=true){ 

       do activity 1; 

       return; 
      } 

      do activity 2; 
      do activity 3; 

    } 
} 
+0

참으로 힘든'return'은 메소드의 실행을 끝낼 것입니다. if 뒤에 로직이 없으면 유효한 옵션입니다. – Gamb

+0

"자바에서는 break 또는 for while이나 switch/case를 사용할 수 있습니다." 잘못된. 또한 명명 된 블록에서 '중단'할 수 있습니다. – Smallhacker

+0

@Smallhacker 제발 보여 주실 수 있습니까? 또는 참조? –

0

음, else 성명서를 쓸 수 있습니다.

... 
if(condition3=true){ 
    do activity 1; 
} else { 
    do activity 2; 
    do activity 3; 
} 
... 

또는, 당신이 선호하는 경우 별도의 기능에 코드의 전체 블록을 추출 할 수 있습니다 그것은 바로 활동 후 반환 한 1

난 당신이 또한 명명 된 블록을 사용할 수 있다고 생각 :

... 
doActivities:{ 
    if(condition3=true){ 
     do activity 1; 
     break doActivities; 
    } else { 
     do activity 2; 
     do activity 3; 
    } 
} 
... 

그러나 위험 할 정도로 멀리 떨어진 고토 (goto)에 가깝기 때문에 권장되지 않을 수 있습니다.

1

다른 사람은 이미 블록을 재구성하여 대답했습니다. 조건을 순차적으로 검사 할 필요가없는 경우 다음을 수행 할 수 있습니다.

if(condition3=true){ 
    do activity 1; 
} else if(condition2=true){ 
    do activity 2; 
    do activity 3; 
} else if(condition1=true){ 

} 
0

휴식이 필요 없습니다. 이렇게해야합니다.

if(condition1=true){ 

} else if(condition2=true){ 
    if(condition3=true){ 
     do activity 1; 
     //I want to break here if condition3 is true, without executing activity 2 & 3 
    } else { 
     do activity 2; 
     do activity 3; 
    } 
} 
0

사실, 난 쉽게 읽을 수있는 방법을 시도 할 것 :

if(condition1) 
{ 

} 
else if(condition2 && condition3) { 
     do activity 1; 

} 
else if(condition2 && !condition3) { 
     do activity 2; 
     do activity 3; 
} 

이 방법 당신은 중첩 된 IFS를 방지하고 매우 읽기 쉬운 코드를 유지한다.

0

이처럼 If-else 패턴은 사례를 처리 할 수있는 몇 가지 클래스 구조가 있음을 강력하게 암시합니다.

Activity activity = ActivityFactory.getActivity(conditionCause); 
activity.execute();