Сравнение сканера со строкой

Я пытаюсь попросить пользователя ввести символ («y»/»n») и проверить, был ли это правильный ответ. Я получаю следующую ошибку: «Несопоставимые типы: java.util.Scanner и java.lang.String»

  Scanner userInput = new Scanner (System.in); System  .out.printf ("Правильно ли написано это слово ?:% s", wordToCheck);  rightCheck (userInput);  

  public boolean rightCheck (Scanner usersAnswer) {if (usersAnswer == "y") {//"Правильно  ! " //Увеличиваем оценку пользователя} else {//"Неправильно"//Уменьшаем оценку пользователя}}  

Я изменил ваш код, не тестировал его, но он должен работать:

  Scanner userInput = new Scanner (System.in); System.out.println («Правильно ли написано это слово ?:» + wordToCheck);  rightCheck (userInput.next ());//отправляем строку, а не сканер. public boolean rightCheck (String usersAnswer)//преобразовываем тип параметра в String {if (usersAnswer == "y") {//"Правильно!" //Увеличиваем оценку пользователя} else {//"Неправильно"//Уменьшаем оценку пользователя}}  

Да, потому что сканер — это способ получения ввода , а не само значение. Вы хотите получить следующее значение из ввода, а затем сравнить его. Примерно так:

  String answer = scanner.next (); if (answer.equals ("y")) {...} иначе if (answer.equals (  "n")) {...}  

Обратите внимание, что обычно (включая этот случай) не сравнивать строки с == , поскольку это сравнивает, относятся ли два операнда к одному и тому же строковому объекту — вас интересует только то, относятся ли они к равным объектам. (Подробнее см. В этом вопросе.)


Да, потому что сканер — это способ ввода , а не само значение. Вы хотите получить следующее значение из ввода, а затем сравнить его. Примерно так:

  String answer = scanner.next (); if (answer.equals ("y")) {...} иначе if (answer.equals (  "n")) {...}  

Обратите внимание, что обычно (включая этот случай) не сравнивать строки с == , поскольку это сравнивает, относятся ли два операнда к одному и тому же строковому объекту — вас интересует только то, относятся ли они к равным объектам. (См. Этот вопрос для получения более подробной информации.)


Я считаю, что вы должны сначала получить строку из сканера (через следующий () может быть?). Затем в вашем методе не используйте «==» в качестве компаратора строк.


Я считаю, что вы должны сначала получить строку из сканера (через следующий () может быть?). Тогда в вашем методе не используйте «==» в качестве компаратора строк.

Оцените статью
techsly.ru
Добавить комментарий