2014-01-25 2 views
1

이것은 컴퓨터 클래스에 대한 할당을위한 것입니다. 이것은 선생님이 요청한 것 이상입니다. 그래서 사람들에게 제 학교 일을하라고하지는 않습니다. 내가 이해할 수없는 것은 스위치를 빠져 나가는 방법입니다. 나는 그것을 사용하는 것을 알고있다 휴식;은 while 루프를 종료하고 휴식을 사용합니다. 스위치를 종료합니다. 내가 찾고있는 것은 스위치와 while 루프를 동시에 종료하는 코드입니다. 내가 할 수있는 것은 바로 스위치를 사용하는 대신 그러나, 선생님은 우리가 그 형식을 사용하지 않는 스위치가 포함 된 While 루프를 종료하는 방법 - Java

if (upgrade == 1){ 
    // Do Stuff 
} 

if (upgrade == 2){ 
    // Do Stuff 
} 

if (upgrade == 3){ 
    // Do Stuff 
} 

if (upgrade == 4){ 
    // Do Stuff 
} 

if (upgrade == 0){ 
    break; // Exit the while loop 
} 

를 사용하지만입니다. 또한 난 그냥 바닥에

if (upgrade == 0){ 
    Break; 
} 

를 추가 할 수 있지만, 여전히 스위치를 사용하지 않고, 선생님이 행복하지 않다고 생각했다. swtich와 while 루프를 동시에 종료 할 수있는 방법이 있습니까?

그가 코드 모양을하고 싶은 것입니다 : 나는 보통이 옵션을 때 전혀 switch을 사용하여에 추천 할 것입니다

while (timesLeveled > 0){ 

    System.out.println("Upgrade Stats"); 

    upgrade = chooseUpgrade(); // retrieves the number for upgrade 

    switch (upgrade){ 
    case 1: 
     // Do stuff if upgrade is 1 
     break; 


    case 2: 
        // Do stuff if upgrade is 2 
     break; 


    case 3: 
     // Do stuff if upgrade is 3 
     break; 

    case 4: 
     // Do stuff if upgrade is 4 
     break; 


    case 0: 

     break; 

    } // Closes off Switch 

      timesLeveled--; // resets level counter 

     } // Closes off while (timesLeveled) 

답변

6

,하지만 당신은 그것을 고수해야하는 경우, 당신은 아마 원하는 break with label. 이러한 사용은 일반적으로 코드가 하나 개 이상의 중요한 정리 (다형성, 루프 개선 등 조건부 교체)를해야한다는 의미

WhileLoop: while (timesLeveled > 0) { 
    ... 
    case n: 
     // do stuff 
     break WhileLoop; 
    ... 
} 

참고.

+1

왜 '스위치'에 대해 권장합니까? – nhgrif

+1

대안으로 : while 루프가 자체 메서드에 있고 (루프 다음의 코드가 아닌 경우),'break' 대신'return'을 사용할 수 있습니다. –

+0

@nhgrif'switch' 문은 오류를 쉽게 만들어주는 어색한 문법을 ​​가지고 있습니다. 합법적 인 값 중 소수만 처리되는 데이터 유형 (예 :'char')을 자주 사용하며 코드 전체에 걸쳐 값과 관련된 동작을 분산시킵니다 . 대조적으로 열거 형은 명확하게 정의 된 합법적 인 값을 가지며 명시 적 흐름 제어 대신 다형성을 사용하여 흥미로운 동작을 추가 할 수 있습니다 (더 많은 유연성을 위해 인터페이스를 구현할 수 있음). – chrylis

관련 문제