2012-01-31 5 views
0

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

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

Благодаря

+2

Пожалуйста покажите свой код. Существуют различные способы выполнения этого преобразования, и мы не знаем, что вы используете. –

+0

Код добавлен. Не думаю, что это было важно, но здесь идет –

ответ

4

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

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

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

NumberFormat format = NumberFormat.getInstance(Locale.US); 
Number number = format.parse("6.03"); 
double d = number.doubleValue(); 
1

Taken directly from the manual.

локали Чувствительный Форматирование

В предыдущем примере создается объект DecimalFormat для Locale по умолчанию. Если вам нужен объект 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()); 

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

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

Кажется, что много кода просто для этого, учитывая, что в Delphi можно просто сделать 'DecimalSeparator: = '|';' и сделать. Спасибо, хотя –

+2

@Magicmaster: И это, вероятно, было бы глобальным изменением, влияющим на глобальное состояние? Не очень хорошая идея ... –

Смежные вопросы