Прошло несколько дней с тех пор, как я начал изучать 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;
}
0
notsavv 5 Дек 2020 в 21:42

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;
2
Bohemian 5 Дек 2020 в 19:22

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

while (x < 1 || x > 50) {
    System.out.println ("Enter a number between 1 and 50!");
    x = sc.nextInt();
}
2
Mureinik 5 Дек 2020 в 18:46

Думаю, ваш способ выглядит нормально - работает :) Другой способ:

 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;
}

Преимущество состоит в том, что на один повтор выхода системы меньше, а sc.nextInt ()

2
Veselin Davidov 5 Дек 2020 в 18:47