2014-01-25 2 views
1

Это предназначение для класса компьютеров. Это выходит за рамки того, о чем учитель учил, поэтому я не прошу вас, чтобы вы делали мою школьную работу для меня. Я не могу понять, как выйти из коммутатора и в то время. Я знаю, что с использованием break; выйдет из цикла while и с использованием break; выйдет из коммутатора. То, что я ищу, - это код, который будет выходить из цикла и цикла 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 одновременно?

Это то, что он хочет, чтобы код, чтобы выглядеть следующим образом:

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

я обычно рекомендую против использования switch на всех, когда у вас есть возможность, но если вы должны придерживаться его, вы, вероятно, хотите break with label.

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

Обратите внимание, что такое использование обычно означает, что ваш код нуждается в большем количестве, чем один существенный очистки (Replace Conditional с полиморфизм, улучшение контура и т.д.).

+1

Почему вы рекомендуете против 'switch'? – nhgrif

+1

В качестве альтернативы: если цикл while в своем собственном методе (а код, следующий за циклом, не указан), вы можете использовать 'return' вместо' break'. –

+0

Операторы @nhgrif 'switch' имеют неуклюжий синтаксис, который делает ошибки легкими, они часто используют типы данных (например,' char'), где обрабатываются только некоторые из легальных значений, и они распространяют поведение, связанное со значениями по всему коду , Перечисление, напротив, имеет четко определенные юридические значения, и интересное поведение может быть добавлено к ним с использованием полиморфизма вместо явного управления потоком (и они могут реализовать интерфейсы для еще большей гибкости). – chrylis

Смежные вопросы