如何为 Scanner.nextDouble() 指定小数分隔符

发布于 2025-01-01 09:58:56 字数 276 浏览 2 评论 0原文

我有一个相当简单的问题。我收到像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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

浮世清欢 2025-01-08 09:58:57

Scanner可以提供Locale来使用,需要指定使用.作为小数点分隔符的Locale

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

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); 
懒的傷心 2025-01-08 09:58:57

您可能遇到了区域设置问题。您可以使用 java.text.NumberFormat解析。

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

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();
还如梦归 2025-01-08 09:58:57

直接取自手册。

区域设置敏感格式

前面的示例为默认 Locale 创建了一个 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());

运行前面的代码示例会产生以下输出。第二列中的格式化数字因区域设置而异:

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

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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文