- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下代码:
Scanner in = new Scanner(System.in);
while (in.hasNextDouble()) {
System.out.println(Double.parseDouble(in.nextLine()));
}
输入:
1.1
2.2
3.3
程序在读取此输入后停止,而正如我假设的那样,它仍应从输入中读取。这是为什么?
最佳答案
问题可能是您的默认语言环境使用逗号作为分隔符。
Double.parseDouble() - 始终使用点作为分隔符。
in.nextDouble() - 使用区域设置指定的分隔符。
结果是其中一种方法可以使用逗号作为分隔符,而另一种方法使用点。
要解决该问题,您应该统一从输入中读取/解析 double 的方法,并决定要使用的分隔符。
您可以设置分隔符的类型,例如使用:
1. 点分隔符:
Scanner in = new Scanner(System.in);
in.useLocale(Locale.ENGLISH);
或:
Scanner in = new Scanner(System.in);
in.useDelimiter("\\.");
2。 逗号分隔符:
Scanner in = new Scanner(System.in);
in.useLocale(Locale.FRENCH);
或
Scanner in = new Scanner(System.in);
in.useDelimiter(",");
所以重构你的代码:
Scanner in = new Scanner(System.in);
in.useLocale(Locale.ENGLISH);
while (in.hasNextDouble()) {
System.out.println(Double.parseDouble(in.nextLine()));
}
要清楚地看到问题,您可以使用此代码:
Locale.setDefault(Locale.FRANCE);
Scanner in = new Scanner(System.in);
System.out.println(in.hasNextDouble());
Double.parseDouble(in.nextLine());
输入:1,1
hasNextDouble() 的结果为真,而 Double.parseDouble(in.nextLine()) 抛出 NumberFormatException。
希望对您有所帮助。
关于java - parseDouble 与 nextDouble,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40551038/
我正在 Android Studio 中使用 java,并尝试将 TextView 中的字符串转换为 double 型,以便它可以用于计算一个人的收入的一些数字。 方法ParseDouble不允许我以
我正在使用 NumberTextWatcher 进行 EditText 的实时编辑,它对我来说工作得很好,但有些用户报告他们遇到了 NumberException 问题,我认为这是因为 EditTex
我遇到了无法解决的问题。尝试了网站上描述的各种解决方案,但没有结果。我传递的字符串“total”会转换为 30.00,但在 Doubleparse 上它会更改为 30.0 我需要 double 为30
我正在学习 java,我在 youtube 上找到了一个很棒的教程,当尝试根据我的需要调整它时,我遇到了这个问题: 我需要将字符串转换为 double 型,进行一些数学计算,然后用结果填充 TextV
我正在尝试编写一个 Java 程序来分析文本文件中字符串数组中的每个字符串,如果数字解析为 double ,则程序会打印它前面的单词和后面的单词。我似乎无法找出如何解析字符串数组的每个元素。目前它只会
我有以下代码: Scanner in = new Scanner(System.in); while (in.hasNextDouble()) { System.out.println(Dou
我有这个 DecimalFormat: DecimalFormat formatSci = new DecimalFormat("#.#########E0"); 当我有 text.append(fo
我正在尝试制作一个应用程序来计算 CGPA。我已经使用我的数字数据保存在 Double 变量类型中。 执行时显示 java.lang.NumberFormatException: Invalid do
我很想得到第二只眼睛的帮助,因为我一直在努力确定我的代码有什么问题。 在 Eclipse IDE 中,我试图实现一个 Google map Activity ,该 Activity 从 Assets
我正在尝试添加一些资金,我想使用 Double.parseDouble,但我认为该页面无法识别 double.parseDouble。我没有收到错误,但它不会添加或传递值。 这是我的代码。 funct
我有一个 AJAX 请求返回一个 json 对象,其中包含几个值,每个值有两位小数,但由于它是 json,这些值在返回时是字符串。我需要做的是对这些值进行加法运算。只是一个简单的 a+b = c,但它
我正在尝试使用下面的代码将字符串转换为 float 和 double ,但结果不同。 代码: System.out.println(Float.parseFloat("120059389"));
在 JavaScript 中,我有一个 21 位数字,我想解析它。 JavaScript 中是否存在 parseDouble 方法? 最佳答案 不可能在 JavaScript 中原生处理 21 位精度
Double.parseDouble("100a");//按预期得到错误但为什么下面的行没有得到错误 Double.parseDouble("100d"); 请解释一下。 最佳答案 根据源代码,Dou
我有一个实用程序类,可以通过执行以下操作来检查是否为Numeric: public static boolean isNumeric(String text) { try {
当我运行以下程序时: System.out.println(Double.parseDouble("99999999999999") + 1); 我得到:1.0E14 如何禁用自动转换以便获得 100
我每天都会收到大约 3-4 次同样的错误,并且一直没有找到解决此问题的方法。根据堆栈跟踪,错误发生在 Microsoft.VisualBasic 库中,那么我该如何解决这个问题呢? 这是我发送给自己的
public static double centsToDollars(Number cents, int precision) { return BigDecimal.valueOf(cen
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: std::string to float or double 我正在写一个计算器(学习 C++),并且刚刚决
我遇到了奇怪的情况。我正在使用 Double parseDouble 计算数字。在某些情况下,我得到的是额外的 0,而不是 109.1,我得到的是 ... 109.10000001。 我正在尝试从 j
我是一名优秀的程序员,十分优秀!