Как правильно проверить на целое число?

Вот что есть:

String str = JOptionPane.showInputDialog(null, "Введите положительное целлое число: ");
    if (str.isEmpty()) {
        JOptionPane.showMessageDialog(null, "Вы ничего не ввели");
    } else {
        int a;
        a = Integer.parseInt(str);
        System.out.println(a);
        if (a < 0 || a == 0 /*|| a % 1 == 0*/) {
            JOptionPane.showMessageDialog(null, "Некорректное число");
        } else {
            int sum = 0;
            for (int i = 1; i <= a; i++) {
                sum += i;
            }
            JOptionPane.showMessageDialog(null, "Числа от 0 до " + a + " равны " + sum);
        }
    }

При такой реализации код работает корректно.

Как только хочу добавить еще условие проверки на целое число(закомментировано в коде), то заходит во второй if и не идет дальше.

Как исправить?


Ответы (1 шт):

Автор решения: OlegFrolOff

Ошибка в предикате: остаток от деления целого числа на 1 всегда будет 0. Соответственно, там должно было быть if(a < 0 || a == 0 || a % 1 != 0) (и чем был бы плох вариант if(a <= 0 || a % 1 != 0) ).

Но, как уже сказали в комментариях, переменная не может содержать не целых чисел, поэтому данный блок кода не будет выполняться никогда. Если уж нужно отдельно обработать ввод не-чисел и не целых чисел, тогда введённое число можно парсить в double, а не в int

→ Ссылка