Как правильно проверить на целое число?
Вот что есть:
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