Не понимаю как в данном коде сделать проверку на дробность числа. Пробовал и if (x%1 !=0) и (x%2 ==1 && x%2 !=0) и через NumberFormat. Не понимаю
import java.util.Scanner;
public class Loop1 {
public static void main(String[] args) throws Exception {
Loop1 l1 = new Loop1();
l1.scannerNumber();
}
public void scannerNumber() {
Scanner scan = new Scanner(System.in);
System.out.println("Введите число: ");
long x = 0;
long result = 1;
int x1 = 0;
int x2 = 0;
while (x1 == 0 || x1 <0) {
try {
if (x2 == 5) {
System.out.println("Слишком много попыток. Программа закрывается");
System.exit(0);
}
x = Long.parseLong(scan.nextLine());
x1++;
if (x<0) {
System.out.println("Вы ввели отрицательное число");
x1--;
x2++;
}
} catch (Exception e) {
System.out.println("Повтори попытку: ");
x2++;
}
}
if (x == 0) {
System.out.println("Result = " + result);
return;
}
for (int i = 0; i < x; i++) {
if (result < 0) {
System.out.println("У вас получилось переполнение " + result);
break;
} else if (result > 0){
System.out.println("Result = " + result);
result *= (x - i);
}
}
}
}
Ответы (3 шт):
Автор решения: стасевич
→ Ссылка
Double number = 3.14;
if (number instanceof Double) {
System.out.println("дробное");
} else System.out.println("не дробное");
//
double d = 0;
if (scan.hasNextDouble()) {
d = scan.nextDouble();
и при вводе с клавиатуры дробного числа, надо ставить запятую, а не точку.
1,13
Автор решения: Andrew Bystrov
→ Ссылка
Самый простой вариант - отбросить дробную часть (кастом к лонгу) и потом проверить, что разница между исходным числом и число, без дробной части больше 0
double x = 3.14;
if (Math.abs((long) x - x) > 0) {
System.out.println("число дробное");
} else {
System.out.println("число целое");
}
пример выше скажет, что число 3.00 - целое (что, правильно)
Автор решения: Stanislav Volodarskiy
→ Ссылка
Math.rint возвращает ближайшее целое значение, но тип сохраняется double. Это позволяет избежать проблем с переполнением при приведении к целому типу больших значений:
double x = Double.parseDouble(scan.nextLine());
if (Math.rint(x) != x) {
System.out.println("число дробное");
} else {
System.out.println("число целое");
}