如何为 Scanner.nextDouble() 指定小数分隔符
我有一个相当简单的问题。我收到像6.03
这样的实数输入,但这给了我错误。如果我改成6,03
就可以了。但是,我无法更改需要处理的输入,那么如何告诉 Java 使用 .
作为分隔符而不是 ,
呢?
Scanner sc = new Scanner(System.in);
double gX = sc.nextDouble(); // Getting errors
谢谢
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 change the input I need to process, so how do I tell Java to use .
as the delimiter instead of ,
?
Scanner sc = new Scanner(System.in);
double gX = sc.nextDouble(); // Getting errors
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
Scanner
可以提供Locale
来使用,需要指定使用.
作为小数点分隔符的Locale
:Scanner
can be provided withLocale
to use, you need to specifyLocale
that uses.
as decimal separator:您可能遇到了区域设置问题。您可以使用 java.text.NumberFormat解析。
You're probably running into Locale issues. You can use java.text.NumberFormat for parsing.
直接取自手册。
区域设置敏感格式
前面的示例为默认 Locale 创建了一个 DecimalFormat 对象。如果您想要非默认 Locale 的 DecimalFormat 对象,您可以实例化 NumberFormat,然后将其转换为 DecimalFormat。下面是一个示例:
运行前面的代码示例会产生以下输出。第二列中的格式化数字因区域设置而异:
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:
Running the previous code example results in the output that follows. The formatted number, which is in the second column, varies with Locale: