Как указать десятичный разделитель

У меня довольно простая проблема. Я получаю ввод с реальным числом, например 6.03, но это дает мне ошибки. Если я изменю его на 6,03, это нормально. Я, однако, не могу изменить ввод, который мне нужно обработать, поэтому как я могу сказать, что Java использует . как разделитель вместо ,?

Scanner sc = new Scanner(System.in);
****** gX = sc.**********(); // Getting errors

Спасибо

3 ответа

Scanner может быть предоставлен Locale для использования, вам нужно указать Locale, который использует . как десятичный разделитель:

Scanner sc = new Scanner(System.in).useLocale(Locale.ENGLISH);


Вероятно, вы столкнулись с проблемами языка. Вы можете использовать java.text.NumberFormat для синтаксического анализа.

NumberFormat format = NumberFormat.getInstance(Locale.US);
Number number = format.parse("6.03");
****** d = number.******Value();


Взято непосредственно из руководства.

Локально-чувствительное форматирование

В предыдущем примере был создан объект DecimalFormat для локали по умолчанию. Если вам нужен объект DecimalFormat для локали без ограничений, вы создаете экземпляр NumberFormat и затем передаете его в DecimalFormat. Вот пример:

NumberFormat nf = NumberFormat.getNumberInstance(loc);
DecimalFormat df = (DecimalFormat)nf;
df.applyPattern(pattern);
String output = df.format(value);
System.out.println(pattern + " " + output + " " + 
 loc.toString());

Выполнение предыдущего примера кода приводит к следующему результату. Отформатированное число, которое находится во втором столбце, зависит от языка:

###,###.### 123,456.789 en_US
###,###.### 123.456,789 de_DE
###,###.### 123 456,789 fr_FR

licensed under cc by-sa 3.0 with attribution.