2015-04-15 2 views
0

Я занимаюсь коммутационным корпусом & Входы сканера для моего выпускного экзамена. Однако я не знаю, почему первый вход сканера в случае 2 пропущен. Вот мой код:Java (Корпус коммутатора + входы для входов сканера)

Scanner scanner = new Scanner(System.in); 
String list=" 1- A \n 2- B \n 3- quit \n Enter your choice"; 
System.out.println(list); 
int choice= scanner.nextInt(); 

while (choice!=3){ 
    switch(choice){ 

    case 1: 
    System.out.println(" Option A "); 
    System.out.println(list); 
    choice = scanner.nextInt(); 
    break; 

    case 2: 
    System.out.print (" Enter your name "); 
    String name=scanner.nextLine(); 
    System.out.println(name); 
    System.out.println(list); 
    choice = scanner.nextInt(); 
    break; 

    default: 
    System.out.println(" Invalid choice"); 
    System.out.println(list); 
    choice = scanner.nextInt(); 
    break; 
} 
} 

Выход при вводе "2":

1-

2- B

3- бросить

Введите свой выбор

Введите ваше имя

1-

2- B

3- бросить

Введите ваш выбор

ответ

1

nextInt() оленья кожа поглощает всю строку, так что вы должны пропустить эту строку , Итак, после int choice= scanner.nextInt(); просто добавьте scanner.nextLine();, и он будет работать.

+0

Ох. Мне также нужно добавить scanner.nextLine(); в каждом случае тоже, правильно? – Snowmap

+0

да, вам нужно пропустить эту строку, если вы читаете новую строку после nextInt (будь то nextInt внутри корпуса или снаружи) – silentprogrammer

+0

Большое спасибо! – Snowmap

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