2016-08-30 3 views
-4

Я использую сканер для ввода данных пользователя.Ввод пользователя, если инструкции на Java не работают

Scanner scanner = new Scanner(System.in); 

Int choice = scanner.nextInt(); 

if(choice==1) { 
    System.out.println(" you chosed number 1!") 
} 

if(choice==2) { 
    System.out.println(" you chosed number 2!") 
} 

if(choice==3) { 
    System.out.println(" you chosed number 3!") 
} 

if(choice==q) { 
    System.out.println("the game will end now!"); 
} 

Итак, когда вы вводите игру, у вас появляется меню, которое появляется. Вы можете выбирать между 1, 2, 3 или q. Если вы нажмете любой из номеров, игра приведет вас к этим разделам. Но если вы нажмете q, игра закончится.

Я не знаю, как исправить, чтобы я мог ввести q и конец игры.

+1

Прежде всего, целочисленные типы начинаются с строчной буквы i. Я также предлагаю объединить все утверждения. Вы можете выйти из 'System.exit (0);' – Li357

+3

Подсказка: если вы хотите, чтобы пользователь вводил «q», вы не просите их ввести целое число. –

+0

nextInt() игнорирует символы – Jens

ответ

4

У вас есть опечатки, и ваша логика неверна. Вам не хватает много точек с запятой, они заканчивают утверждение. Когда int станет символом? Символ не заключен в кавычки. Используйте next, чтобы получить строчную версию. Используйте .equals() для проверки строк.

Scanner scanner = new Scanner(System.in); 

String choice = scanner.next(); 

if(choice.equals("1")) { 
    System.out.println(" you chose number 1!"); 
} else if(choice.equals("2")) { 
    System.out.println(" you chose number 2!"); 
} else if(choice.equals("3")) { 
    System.out.println(" you chose number 3!"); 
} else if(choice.equalsIgnoreCase("q")) { 
    System.out.println("the game will end now!"); 
    System.exit(0); 
} 

Вы также можете разобрать как целое и сравнить с использованием ==.

Приведенный выше код вводит пользовательский ввод в виде строки. Затем он проверяет, равен ли он 1, 2, 3 или q, а затем выполняет строки соответственно. Q проверяется, и случай игнорируется.

+0

спасибо большое. это решило мою проблему! – adevapp

+4

Если я помог, пожалуйста, подумайте о принятии ответа – Li357

-1

Когда вы выполняете скрининг строк, вы не можете просто использовать ==. В этом случае вам нужно использовать choice.equals («q»)

+0

нет сравнения строк в фрагменте кода. – Berger

+0

'choice' является' int'. Он не может быть разыменован. – bradimus

+0

@Berger Да есть; но никакая строка не будет прочитана withscanner.nextInt() ... –

0

Поскольку команды являются символами, используйте nextByte вместо nextInt. Используйте switch - case вместо if - else, чтобы упростить код. Convert your byte into char и используйте его для вашего switch, случаи будут '1' '2' '3' и 'q'. Если вы хотите, чтобы игра продолжалась до 'q', оберните while вокруг вашего switch - case с знаком конца «q». Поскольку это домашняя работа, скорее всего, я не пишу исходный код.

0

Вы не должны получать nextInt() со сканера, coz боковое будет проигнорировано. Кроме того, чтобы предотвратить много, если/else вы можете использовать переключатель/футляр. scanner.next() вернет некоторую строку, после чего мы получим для каждого случая и сравним эту строку со строкой в ​​случае. Добавить разрыв, чтобы прекратить ходить в случаях.

Scanner scanner = new Scanner(System.in); 
    switch (scanner.next()) { 
     case "q" : System.exit(0); 
     case "1" : 
      System.out.println("1"); 
      break; 

     //... 

     case "7" : 
      System.out.print("7"); 
      break; 
     default: System.out.print("Try one more time"); 
    } 

Если scanner.next! = Любые случаи, то u возвращает сообщение из "default".

+2

Код без объяснений никому не помогает!Добавьте один, чтобы лучше ответить – Li357