Я хочу ввести двойные значения в Java с точкой, а не запятой, но я получаю исключение - PullRequest
0 голосов
/ 23 февраля 2019

Привет, я начал изучать java самостоятельно пару дней назад.Я пытаюсь написать свои первые базовые методы, но столкнулся с проблемой.

public class CollectInput {

public static void collectInput() {


        System.out.println("Collect input double data!" + "\n\n");

        CustomUserInputData CustomData = new CustomUserInputData(); 
        Scanner userDataInput = new Scanner(System.in); 

        System.out.println("Enter the first double value:"); 
        CustomUserInputData.setFirstDoubleData(userDataInput.nextDouble());

Когда я запускаю этот код и вводю двойное значение, используя запятую, например, например:

3,2345

Нет проблем.

Но когда я хочу ввести двойное значение в таком формате, как:

3.2345

Java throwsисключение:

Exception in thread "main" java.util.InputMismatchException
    at java.base/java.util.Scanner.throwFor(Unknown Source)
    at java.base/java.util.Scanner.next(Unknown Source)
    at java.base/java.util.Scanner.nextDouble(Unknown Source)

Что мне нужно сделать точно, чтобы получать входные данные с точкой, а не запятой?

Заранее спасибо.

1 Ответ

0 голосов
/ 23 февраля 2019

Я предполагаю, что ваш системный языковой стандарт по умолчанию использует , в качестве десятичного разделителя.

Если вы хотите продолжать использовать Scanner, вы можете просто установить языковой стандарт на Locale.US с помощью useLocale.Локаль США использует . в качестве десятичного разделителя:

Scanner userDataInput = new Scanner(System.in).useLocale(Locale.US);
... // Code as before
...