Пытаюсь понять, как работает данное решение с валидатором (вложенный в 'do' while). Никак не могу понять порядок исполнения кода.
Не понимаю, почему age = s.nextInt(); идет ниже цикла. В каком порядке здесь что выполняется?
void setAge() {
Scanner s = new Scanner(System.in);
do {
while (!s.hasNextInt()) {
System.out.println("Некорректное значение, попробуйте еще раз: ");
s.next();
}
age = s.nextInt();
System.out.println("Устанавливается возраст...");
if (age < 0) {
System.out.println("Некорректное значение, введите еще раз: ");
}
if (age > 150) {
System.out.println("Слишком большое значение, введите еще раз: ");
}
} while (age < 0 || age > 150);
System.out.println("Вы установили возраст - " + this.age);
}
У вас строка:
age = s.nextInt();
Входит в цикл:
do {/*тело цикла*/} while (age < 0 || age > 150);
Такой цикл выполняется хотя-бы один раз, затем проверяется условие. Кстати условие: "(age < 0)" - это начиная с нуля. Возраст разве может быть равен нулю? В условии наверное нужно поставить: "(age <= 0)".
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно записывать метаданные и большие файлы в удаленную MongoDBИзвестен адрес сервера с монгой
подскажите пожалуйста как передвинуть или удалить маркер в google map Android
Нужно продолжить линии графиков, если в некоторых сериях нет значений