Есть ли лучший способ проверить, ввел ли пользователь число от 1 до 50?

#java

#java

Вопрос:

Прошло несколько дней с тех пор, как я начал изучать Java, и в настоящее время я разбираюсь с тем, что я узнал до сих пор. В этом методе я пытаюсь убедиться, что пользователь вводит число между [1-50].

То, как я это сделал, кажется, по меньшей мере, странным,
поэтому я был бы признателен за отзывы опытных программистов.

 public static int humanNumber()
{

    Scanner sc = new Scanner (System.in);
    System.out.println ("enter a number between 1 and 50.");
    int x = sc.nextInt();

        if ( x < 1 || x > 50)
        {
          do
          {
            System.out.println ("enter A number between 1 and 50!!");
            x = sc.nextInt();
          } while (x<1 || x>50);
        }


    return x;
}
 

Ответ №1:

Вместо if и do while цикла вы могли бы использовать while цикл:

 while (x < 1 || x > 50) {
    System.out.println ("Enter a number between 1 and 50!");
    x = sc.nextInt();
}
 

Ответ №2:

Я думаю, что ваш способ выглядит нормально — он работает 🙂 Другим способом было бы сделать:

  public static int humanNumber() {
     Scanner sc = new Scanner (System.in);
     int x = 0;
     while(x<1 || x>50) {
           System.out.println ("enter A number between 1 and 50!!");
            x = sc.nextInt();
     }
     return x;
}
 

Преимущество заключается в том, что на одно повторение system out и sc.nextInt() меньше

Ответ №3:

Да: удалите повторяющийся код вне цикла:

 Scanner sc = new Scanner (System.in);
int x;
do {
    System.out.println ("enter A number between 1 and 50!!");
    x = sc.nextInt();
} while (x<1 || x>50);
return x;