2013-09-20 3 views
1

Какой код мне нужен, чтобы сделать это, если пользователь вводит 7, 8 или 9 собак; он все равно выведет сообщение в случае 6?Как совместить несколько входных значений в инструкции оператора switch?

int dogs; 

dogs = Integer.parseInt(JOptionPane.showInputDialog("How many dogs do you have?")); 

switch (dogs) 
{ 
      ... 
      ... 
      ... 
case 4: JOptionPane.showMessageDialog(null,"Four dogs is too many."); break; 

case 5: JOptionPane.showMessageDialog(null,"Five dogs means you're a crazy person."); break; 

case 6: JOptionPane.showMessageDialog(null,"That is totally unbelieveable."); 

default: JOptionPane.showMessageDialog(null,"Invalid input."); 

} // end switch 
+0

Добавить случаях для те, которые текут в 6 и ломаются. –

+0

Как насчет 1, 2, 3 собак? И 0? –

+0

Посмотрите «переход через провал» – blgt

ответ

3
case 6: 
case 7: 
case 8: 
    JOptionPane.showMessageDialog(null,"That is totally unbelieveable."); 
    break; 

Это сделает работу.

Однако я бы изменить его на:

case 4: JOptionPane.showMessageDialog(null,"Four dogs is too many."); break; 
case 5: JOptionPane.showMessageDialog(null,"Five dogs means you're a crazy person."); break; 
default: JOptionPane.showMessageDialog(null,"That is totally unbelieveable.");break; 

Это устранит Output сообщение Invalid, но будет работать для каждого числа> 5, но я думаю, что это приемлемо, так как значение собак выходит из звонка Integer.parseInt(). Если содержимое недопустимо, исключение будет исключено, и сообщение Invalid Input может быть показано внутри обработчика исключений и, как и мудрый, исключение может быть выбрано, если собаки отрицательны.

Это имеет то преимущество, что будет работать для каждого количества собак. Если вам нужно управлять другим сообщением об ошибке, достаточно будет добавить конкретную ветвь case.

int dogs; 

try { 
    dogs = Integer.parseInt(JOptionPane.showInputDialog("How many dogs do you have?")); 
    if (dogs < 0) { 
     throw new Exception("Negative dog is impossible!"); 
    } 
    switch (dogs) 
    { 
      ... 
      ... 
      ... 
    case 4: JOptionPane.showMessageDialog(null,"Four dogs is too many."); break; 

    case 5: JOptionPane.showMessageDialog(null,"Five dogs means you're a crazy person."); break; 

    default: JOptionPane.showMessageDialog(null,"That is totally unbelieveable.");break; 
    } 
} catch (Exception e) { 
    JOptionPane.showMessageDialog(null,"Invalid input."); 
} 
+1

Согласовано - поместите один тест на отрицательный (или иначе недействительный номер) вне оператора switch, а затем используйте параметр по умолчанию, как предлагает BigMike. –

4

Проверьте наличие недействительный номер, а затем просто использовать default пункт:

if (dogs < 0) { 
    JOptionPane.showMessageDialog(null,"Invalid input."); 
} else { 
    switch(dogs) { 
    // ... 
    case 5: 
    JOptionPane.showMessageDialog(null,"Five dogs means you're a crazy person."); 
    break; 
    default: 
    JOptionPane.showMessageDialog(null,"That is totally unbelieveable."); 
    break; 
    } 
} 
3

Просто добавьте случаи для 7,8,9 с 6

case 6: 
case 7: 
case 8: 
case 9: 
JOptionPane.showMessageDialog(null,"That is totally unbelieveable."); 
break; 
+0

Я имею в виду, что я просто перечислял другие цифры. Что делать, если пользователь продолжает идти? Например, введите 100 собак. Разве это неэффективно иметь 100 случаев, хотя я знаю, что после 6 или более собак он скажет одно и то же сообщение? – Dan

+0

@ DannyHsu. Тогда есть два варианта. 1. Создайте индивидуальные условия для значений меньше 6 и пусть другие числа перейдут на значение по умолчанию. 2. Используйте, если else вместо переключателя –

0
import java.io.*; 
import java.lang.*; 
import java.util.*; 

public class DogCheck { 
public static void main(String[] args) { 
    int dogs; 
    Scanner input = new Scanner(System.in); 
    System.out.println("Enter Number of Dogs :"); 
    dogs=input.nextInt(); 
    if (dogs < 0) 
     System.out.println("WoW! Aliens has arrived...") 
    else 
    switch(dogs) { 
    case 4: JOptionPane.showMessageDialog(null,"Four dogs is too many."); break; 
    case 5: JOptionPane.showMessageDialog(null,"Five dogs means you're a crazy `person."); break;` 
    default: 
    JOptionPane.showMessageDialog(null,"That is totally unbelieveable."); 
    break; 
    } 
} 
} 
Смежные вопросы