Что не так c решением на цикл for?
Имеем задачу:
Есть два числа, которые задаются пользователем через консоль (назовем эти два числа
aиb). Используя циклfor, вывести все числа из диапазона междуaиb, которые делятся на5без остатка, но при этом не делятся на10без остатка.
Например, число 15 подходит под наше условие
(делится на 5 без остатка и не делится на 10 без остатка), но число 20 не подходит под наше условие
(делится на 5 без остатка и делится на 10 без остатка). Сами числа a и b в диапазоне не учитывать.
Если a >= b вывести сообщение "Некорректный ввод".
Пример:
Вводим в консоли: 7 78
Вывод: 15 25 35 45 55 65 75
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
if (a >= b) {
System.out.println("Некорректный ввод");
}
// a = a + 1;
//b = b - 1;
for (; a < b; a++) {
if (a % 5 == 0 && a % 10 != 0) {
System.out.print(a + " ");
}
}
В чем вопрос!?
a = 5, b = 50 ==> Expected: 15 25 35 45 Actual: 5 15 25 35 45
Тест не проходит.
Ничего умнее, чем изменить переменные перед циклом я не придумал, тест проходит, но у меня ощущение, что это не особо корректно.
Как правильнее реализовать решение?
Ответы (1 шт):
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
if (a >= b) {
System.out.println("Некорректный ввод");
}
for (int i = a + 1; i < b; i++) {
if (i % 5 == 0 && i % 10 != 0) {
System.out.print(i + " ");
}
}
Или так, чтобы в случае некорректного ввода даже не входить в цикл:
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
if (a >= b) {
System.out.println("Некорректный ввод");
} else {
for (int i = a + 1; i < b; i++) {
if (i % 5 == 0 && i % 10 != 0) {
System.out.print(i + " ");
}
}
}