Что не так 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 шт):

Автор решения: nikoshi
    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 + " ");
            }
        }
    }
→ Ссылка