Когда я ввожу целые числа, такие как 5, 7, 14 и т. д., все в порядке. Но когда ввожу например 7.5 получаю ошибку. Где ошибка?
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextDouble(Scanner.java:2564)
at Exercise_11.main(Exercise_11.java:8)
Ниже приведен код:
import java.util.Scanner;
public class Exercise_11 {
public static void main(String[] args) {
Scanner radius = new Scanner(System.in);
System.out.print("Please input the radius of circle: ");
double r= radius.nextDouble();
double l= 2*Math.PI*r;
double s= Math.PI*r*r;
System.out.println("Length = " + l);
System.out.println("Area = " + s);
}
}
@APaul нет, это не сработает, если я ввожу двойные числа. Я добавляю скриншот, и вы можете проверить сейчас
Вы работаете с системой, в которой локаль указывает, что ,
является десятичным разделителем. Попробуйте 7,5
@ElliottFrisch странно .. Десятичный разделитель в моей системе - точка "." но я сделал то, что ты сказал. Оно работает. Почему? Посмотрите на 1-й снимок экрана, там система также использует точку "." для разделения чисел.
Язык вашей системы не поддерживает точку в качестве десятичного разделителя. Используйте локаль, которая поддерживает точку в качестве разделителя, например. Locale.ENGLISH
.
Scanner radius = new Scanner(System.in).useLocale(Locale.ENGLISH);
Пример запуска:
Please input the radius of circle: 7.5
Length = 47.12388980384689
Area = 176.71458676442586
Спасибо за помощь. Странно.... Десятичный разделитель в моей системе - точка "." но я сделал то, что ты сказал. Оно работает. Почему? Посмотрите на 1-й снимок экрана, там система также использует точку "." для разделения чисел
Вы устанавливаете локаль где-то в своем приложении, например Locale.setDefault(...)
?
После вашего комментария поставил и все ок. Работает.. Но в настройках моего компьютера разделитель не ",". Это точка "." Я уверен, что использую это часто.
Не используя мой код, выполните System.out.println(radius.locale());
, и он покажет вам, какую локаль использует ваша JVM по умолчанию.
az_AZ_#Latn.... Понятно. Большое спасибо. Большое спасибо. Я многому научился! Да здравствует!
хорошо, приведенный выше код работает для меня. Если просто поставить 7.5 то вроде отлично заработало, как и должно