我有一个相当简单的问题。我得到像6.03
这样的实数输入,但这给了我错误。如果我将其更改为6,03
,则可以。但是,我无法更改我需要处理的输入,那么如何告诉Java使用.
作为分隔符而不是,
?
Scanner sc = new Scanner(System.in);
double gX = sc.nextDouble(); // Getting errors
由于
答案 0 :(得分:4)
Scanner
可以与Locale
一起使用,您需要指定使用Locale
作为小数点分隔符的.
:
Scanner sc = new Scanner(System.in).useLocale(Locale.ENGLISH);
答案 1 :(得分:1)
您可能遇到了Locale问题。您可以使用java.text.NumberFormat进行解析。
NumberFormat format = NumberFormat.getInstance(Locale.US);
Number number = format.parse("6.03");
double d = number.doubleValue();
答案 2 :(得分:1)
Taken directly from the manual.
区域设置敏感格式
前面的示例为默认的Locale创建了一个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());
运行上一个代码示例将导致后面的输出。格式化的数字位于第二列,因Locale而异:
###,###.### 123,456.789 en_US
###,###.### 123.456,789 de_DE
###,###.### 123 456,789 fr_FR