Как проверить, целое ли число типа double

Задача
Обработайте некорректные данные (ничего не ввёл, отрицательные число, 0, нецелое число), выведя соответствующие уведомления.

Я сделал всё, кроме "нецелого числа". Как сделать так, чтобы при вводе нецелого числа программа выдавала сообщение?


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

Автор решения: Имя Фамилия

Первый способ:

if (str.contains(".") || str.contains(",")) {
    ...
}

Второй способ:

try {
    Integer.parseInt(str);
} catch (NumberFormatException nfe) {
    ...
}

Третий способ:

if (n % 1 != 0) {
    ...
}

Четвёртый способ:

if ((int)n != n) {
    ...
}

Первый способ не работает с числами в экспоненциальной записи, содержащими точку (или запятую), такими как 1.1E1, что равно 11.
Второй способ помимо этого не работает вообще ни с какими числами, представленными в экспоненциальной записи.

Все вышеперечисленные способы не работают с +-Infinity и NaN. Если такие "числа" могут возникнуть при вводе, на них следует проверить заранее.

→ Ссылка