#java #validation #if-statement #input
#java #проверка #if-statement #ввод
Вопрос:
У меня проблема с проверкой программы. Я пробовал использовать, While/Switch но это все равно. Проблема заключается в том, что когда пользователь вводит неверный ввод, например, 5, отображается ошибка, а затем он позволяет им ввести ее снова, но если они снова вводят неправильный номер, программа не проверяет. Я определенно могу копировать код снова и снова в нем, но должен быть более простой способ.
Я надеюсь, вы понимаете, чего я пытаюсь достичь.
Как я мог сделать так, чтобы это был непрерывный цикл?
// Choosing the right room
public static int rooms () {
int room;
// Creating a new keyboard input
Scanner scanner = new Scanner(System.in);
// Displaying a message on the screen
System.out.println("What room are you in? ");
// Input
room = scanner.nextInt();
if (room==1) {
roomOne();
} else if (room==2) {
roomTwo();
} else if (room==3) {
roomThree();
} else if (room==4) {
roomFour();
} else {
System.out.println("Wrong room number, please enter the room number.");
room = scanner.nextInt();
}
//System.out.println("Sorry but you entered the wrong room number " room " Enter the correct room number 1-4 ");
return room;
} // End Rooms
Комментарии:
1. вы ищете методы и / или циклы..
2. вы также можете использовать while(true)
Ответ №1:
Вы ищете цикл while, что-то вроде этого.
Я использую do … в то время как для выполнения строки хотя бы один раз.
Методы проверяют значение и выводят сообщение, если оно неверно. Возврат false предотвратит выход кода из цикла и повторное чтение.
{
// Creating a new keyboard input
Scanner scanner = new Scanner(System.in);
int room;
do {
// Displaying a message on the screen
System.out.println("What room are you in? ");
room = scanner.nextInt();
} while( !isValid(room) );
... //if else or switch
}
private boolean isValid(int room){
if(room > 4 || room < 1){
System.out.println("Try again ;)" );
return false;
} else return true;
}
Это быстрый тест кода, даже тест.
Ответ №2:
while (true) {
int room = scanner.nextInt();
if(room < 1 || room > 4) {
System.out.println("Wrong room number, please enter the room number.");
continue;
}
break;
}
if (room == 1)
roomOne();
else if (room == 2)
roomTwo();
else if (room == 3)
roomThree();
else if (room == 4)
roomFour();
Надеюсь, это поможет, тем не менее, вам следует прочитать немного больше о циклах.
Ответ №3:
Вот как вы должны настроить цикл для очистки ввода:
- Определите логическое значение и присвоите значение true или false
- Заставьте цикл while выполняться для логического значения
- Когда ввод «чистый», установите логическое значение true