I have a fairly simple problem. I am getting real-number input like6.03
, but that gives me errors. If I change it to 6,03
, it\'s ok. I, however, can\'t
Scanner
can be provided with Locale
to use, you need to specify Locale
that uses .
as decimal separator:
Scanner sc = new Scanner(System.in).useLocale(Locale.ENGLISH);
Taken directly from the manual.
Locale-Sensitive Formatting
The preceding example created a DecimalFormat object for the default Locale. If you want a DecimalFormat object for a nondefault Locale, you instantiate a NumberFormat and then cast it to DecimalFormat. Here's an example:
NumberFormat nf = NumberFormat.getNumberInstance(loc);
DecimalFormat df = (DecimalFormat)nf;
df.applyPattern(pattern);
String output = df.format(value);
System.out.println(pattern + " " + output + " " +
loc.toString());
Running the previous code example results in the output that follows. The formatted number, which is in the second column, varies with Locale:
###,###.### 123,456.789 en_US
###,###.### 123.456,789 de_DE
###,###.### 123 456,789 fr_FR
You're probably running into Locale issues. You can use java.text.NumberFormat for parsing.
NumberFormat format = NumberFormat.getInstance(Locale.US);
Number number = format.parse("6.03");
double d = number.doubleValue();