2011-02-05 2 views

답변

10

이름이있는 코드 블록이있는 경우 break를 사용하여 종료 할 수 있습니다. 즉, 블록 이름 지정에 사용했던 코드 블록을 사용할 수 있습니다. 그것도없이 작동

 
name: if(true) { 
    // do something 
    if(/* condition */) { 
     break name; 
    } 
    // do more 
} 

는 IF :

 
name: { 
    // do something 
    if(/* condition */) { 
     break name; 
    } 
    // do more 
} 

이 몇 가지 논리에 가드 조건의 집합, 그리고 아래로 떨어진 것이다 논리의 또 다른 세트가있을 때 내 작품에 등장 경비원의 결과에 관계없이

다른 구조 읽고 수정하기가 더 어렵 또 다른 예 : 보통 내가 베어 블록 아닌 경우를 사용하지만

 
block: if(/* guard */) { 

    // prep work 

    if(/* guard */) { 
    break block; 
    } 

    // prep work 

    if(/* guard */) { 
    break block; 
    } 

    // real work 
} 

.

+0

+1 결코 전에 본적이 없습니다. 비록 당신이 다른 블록에서 과거를 깨고 싶은 코드를 넣지 않더라도 같은 결과를 얻는가? 어떤 경우에는 –

+0

이지만 양식 (가드, 계산, 가드, 계산, 가드, 워크)은이 방법을 훨씬 쉽게 읽을 수 있습니다. –

+0

저는 개인적으로 여전히 if-else 구조를 선호한다고 생각하지만 지금은 새로운 것을 배웠습니다 :-). –

6

당신은 어떤 문 블록 전에 레이블을 사용할 수없는

name: if(true){ 
    //do something 
} 

이 컴파일 쓸모 보인다. 이것은 아마도 루프에 가장 일반적으로 사용되지만 다른 곳에서는 완벽하게 유효합니다.

+0

+1, 답을 추가하려면이 링크에 몇 가지 예가 있습니다. http://download.oracle.com/javase/tutorial/java/nutsandbolts/branch.html –

+0

mmm ok하지만 내 질문에 답할 수 없습니다. D는 if라는 이름을 붙일 실제적인 용도가 있습니까? – Oneiros

2

Sarah Happy의 대답은 루프 이외에 코드 블록을 깨는 데 break을 사용할 수 있다는 것을 보여줌으로써 실제로 내 것보다 정확하므로 대답을 살펴 보시기 바랍니다. 실제로 당신이 말한 바와 같이 label입니다


는 대한과 루프 동안이다. 그것은 다른 곳에 유효하지만 난 당신이 하지 사용할 수있는 추가 할

goto name; 

goto이 예약어 인 반면, 자바 하지 지원 고토 않지만, 라벨의이 형태를 지원합니다 breakcontinue과 결합 된 루프. 당신이 당신의 레이블 continue를 사용하려고하는 경우, 또는 두 illegal start of expressionnot a statement

말,

name: if(true){ 
    //do something 
    } 
goto name; 

당신이 오류를 얻을 것 : 당신은 같은 고토를 포함하는 코드 샘플을 확장하는 경우

하지만 루프 않고, 같은 :

name: if(true){ 
    //do something 
    } 
continue name; 

당신은 undefined label: name

를 얻을 것

컴파일러 측면에서 루프가없는 레이블은 괜찮습니다.하지만 루프가 없으면 무의미합니다.

+0

괜찮 았어. 그래서 쓸모가 없어. D 조. 고마워, +1 – Oneiros

+0

네스트 루프에서 멀티 레벨 나누기와 같은 용도로 사용된다. –

+0

@Oneiros : 아니오, 쓸모가 없습니다. 이 대답은 잘못된 것 같습니다. 사라의 대답을보십시오. – Mehrdad

0

루프를 깨는 것처럼 뒤로 또는 if 문으로 건너 뛰기를 원할 수 있습니다. 이 문제에 대해 생각할 때마다 새로운 방법을 만드는 방법을 찾아보십시오.

관련 문제