Если я ввожу «0», «1», «2» или «3» (в указанном порядке), программа выдает идеальный результат. Если я ввожу целые числа в другом порядке, код работает неправильно. Например, если я сначала выберу «2», мой код ожидает, что я введу целое число три раза, чтобы получить правильный результат. Может кто-нибудь, пожалуйста, дайте мне знать, что я делаю неправильно?
Я пытался использовать операторы else-if, и когда я ввожу что-либо, кроме «0», мне нужно вводить целое число в сумме, равное номеру индекса. Например, если я ввожу «2», мне нужно ввести его три раза, чтобы получить желаемый результат.
System.out.println("Please input a number between zero to 3");
for (int i = 0; i < 4; i++) {
if (sc.nextInt() == 0) {
System.out.println("You have selected " + right);
}
if (sc.nextInt() == 1) {
System.out.println("You have selected " + left);
}
if (sc.nextInt() == 2) {
System.out.println("You have selected " + up);
}
if (sc.nextInt() == 3) {
System.out.println("You have selected " + down);
break;
}
}
Мой ожидаемый результат должен быть:
This program simulates the 4 arrows RIGHT, LEFT, UP, DOWN using the numbers 0, 1, 2, 3 respectively Please input a number between zero to 3 3 You have selected DOWN 1 You have selected LEFT 0 You have selected RIGHT 2 You have selected UP Process finished with exit code 0
Этот вывод происходит, когда я помещаю их в правильном порядке. Если я начну с ввода «1», это произойдет:
This program simulates the 4 arrows RIGHT, LEFT, UP, DOWN using the numbers 0, 1, 2, 3 respectively Please input a number between zero to 3 1 1 You have selected LEFT
Мое понимание (которое ограничено) заключается в том, что я вызываю nextInt(), потому что я ищу определенный целочисленный ввод от сканера.
сохранить ввод в переменную: int direction = sc.nextInt(); и выполните проверку if для этой переменной.
nextInt() потребляет входные данные, которые он возвращает. Если вы вызовете его 4 раза, он будет ожидать 4 целых числа от стандартного ввода.




Измените свою логику на:
for (int i = 0; i < 4; i++) {
System.out.println("Please input a number between zero to 3");
// use input and don't advance the scanner every time
int input = sc.nextInt();
if (input == 0) {
System.out.println("You have selected " + right);
}
if (input == 1) {
System.out.println("You have selected " + left);
}
// so on and so forth
}
Используя sc.nextInt()четыре раз, вы ищете следующий токен ввода, которого нет. Так что получите входные данные для запуска цикла for каждый, и он будет работать, как и ожидалось.
Кажется, это работает, однако не позволяет мне вводить целые числа 4 раза. Код «сломается» и завершится только после одного ввода.
Оно делает. Кроме того, это может иметь какое-то отношение к оператору break (в зависимости от ввода какие, который вы вводите.)
Я только что понял, что если я удалю оператор «break», код запустится и завершится после 4 попыток. Спасибо вам за вашу помощь!!
Вы называете
nextInt()в каждом заявленииif. Подумайте о том, что это делает.