【发布时间】:2019-01-30 16:00:14
【问题描述】:
我无法从我的 bash 终端在我的程序中输入双精度值。下面是我用来弄清楚为什么会发生的代码。
这是我的测试代码:
import java.util.*;
public class DoubleTest {
public static void main (String[] args) {
Scanner sc = new Scanner(System.in);
double n = sc.nextDouble();
System.out.println(n);
}
}
使用下面的输入 5,我得到了预期的结果。
user $ java DoubleTest
5
5.0
现在到有趣的部分。我输入了代码中声明的 Double,这会发生:
user $ java DoubleTest
5.0
Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextDouble(Scanner.java:2564)
at DoubleTest.main(DoubleTest.java:6)
当给出 5,0 的值时——结果如下:
user $ java DoubleTest
5,0
5.0
所以看起来.(点)不起作用,而是,(逗号)。
我已经检查了我的语言环境,但这应该不是问题。
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"
【问题讨论】:
-
请确定:丹麦的常用格式是使用逗号,对吧?
-
正如 RKrum 指出的那样:
Scanner将使用默认语言环境。目前尚不清楚您有关您的语言环境的信息来自何处,但基本上将Locale.setDefault(Locale.ENGLISH);称为“main方法的第一行”应该值得一试...
标签: java terminal double locale comma