Я только что прочитал семь потоков, связанных с проблемами сканера Java, но ни один не содержал ответа на мою проблему.
Я пытаюсь получить пользовательский ввод с консоли.Я создаю объект Scanner (входной), затем пытаюсь сохранить команду пользователя в строке с именем «команда».Затем я передаю «команду» обратно в исходную функцию runGame.Похоже, что сканер / команда читает текст записи.(Если я ввожу 'd' и затем печатаю содержимое команды, она печатает 'd'.)
Но когда я возвращаю строку и сохраняю ее в nextMove, она ломается.Например, я введу «d», но затем (nextMove == «d»), если оператор не вызывается.Фактически, независимо от того, что я ввожу, вводится только оператор else.
Что я делаю не так?Как я могу это исправить
Вот оригинальный код функции:
public void runGame() {
drawWindow();
while(true) {
String nextMove = takeInput();
if(nextMove == "d")
System.out.print("WORRRRDDD d");
else if(nextMove == "w")
System.out.print("WORRRRDDD w ");
else {
drawWindow();
System.out.print("YOU GOT ELSED");
continue;
}
}
}
А вот код функции takeInput / Scanner:
public String takeInput() {
String command;
input = new Scanner(System.in); // "input" is the Scanner object used for all input.
try{
System.out.print("Enter command (d, w, stop, restart, exit): ");
command = input.next();
} catch(Exception e) {
System.out.println("You entered an invalid command.");
return null;
}
System.out.println("\n RETURNING COMMAND" + command + " \n");
return command;
}
Пока вы помогаете (я собираюсь искать, но если я его не найду), как лучше распознать пустой ввод в объекте сканера?
И должны ли они быть?любые другие исключения / ловушки, о которых мне нужно беспокоиться при вводе пользователем в консоли?