Java неправильный цикл ввода пользователем до правильного

#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:

Вот как вы должны настроить цикл для очистки ввода:

  1. Определите логическое значение и присвоите значение true или false
  2. Заставьте цикл while выполняться для логического значения
  3. Когда ввод «чистый», установите логическое значение true