2017-05-23 8 views
0

Java 코드를 분석하려고하지만 그 내용을 확인하려고합니다. 그러나 "구분 레이블"행에 "정의되지 않은 레이블"오류가 나타납니다. 내 이해에서 Java와는 달리 # 현재 범위 외부의 범위로 침입 할 수 있습니다. 그게 옳지 않아? 당신의 예에서레이블이있는 구분을 사용할 때 java에서 "정의되지 않은 레이블"오류가 발생했습니다.

if (conditions) { 
    // some code 
    if (conditions) { 
    break label; 
    } 
    // some code 
} 

for (;;) { 
    if (conditions) { 
    // some code 
    } 
    // some code 
    break; 
    label: 
    // some code 
} 
+2

좋은 슬픔. 어떤 끔찍한 표정의 코드. 컴파일러 오류가 발생하면 아무것도 수행하지 않으므로 분석 할 필요가 없습니다. –

+0

@AndyTurner 디 컴파일 된, 나는 디 컴파일러의 측면에서 오류가 있다고 생각합니다. – Azilvl

+0

디 컴파일러가 호환되지 않는 코드를 생성하는 경우 정말 사용 가치가 있습니까? –

답변

4

, 당신은 C/C에서 goto label; 구문 ++과 유사한 것처럼 break label;를 사용하려고합니다. 이것은 Java에서 작동하는 방식이 아닙니다.

Java의 경우 break label; 구문은 중첩 루프를 사용하고 내부 루프에서 문제의 외부 루프 중 하나로 탈출 할 때만 적용 할 수 있습니다. 예를 들어

:

outer: while(some condition) { 
    inner: while(another condition) { 
     innermost: while(yet another condition) { 
      if(breaking_condition) { 
       break inner; 
      } else if (one more breaking condition) { 
       break outer; 
      } 
     } 
    } 
} 

오라클에서이 자습서를 참조하십시오 :이 도움이

https://docs.oracle.com/javase/tutorial/java/nutsandbolts/branch.html


희망!

+1

그래서 자바는 결국 범위 밖의 줄로 점프 할 수 없습니까? – Azilvl

+1

맞습니다. 그것은하지 않는다. – anacron