经过漫长而痛苦的调试后,我发现了Scanner的一种奇特行为。初始化扫描仪,输入格式为:
1.0,2.0,5.0,10
就像这样的整数和双打的组合。但是,在运行以下循环时:
scan.useDelimiter("[, ]");
while(scan.hasNext()) {
if(scan.hasNextDouble()) {
System.out.println(scan.nextDouble());
} else {
System.out.println("Other:"+scan.next());
}
}
我得到了输出:
Other:1.0
Other:2.0
Other:5.0
10.0
这很奇怪。它将整数解释为双精度(如预期的那样),但无法识别“真正的”双精度。但是,如果我将第一行更改为:
scan.useDelimiter("[. ]");
它返回:
1.0
0.2
0.5
0.1
这意味着Scanner.hasNextDouble将“0,2”识别为双倍但不是“1.0”。这是设计的吗?似乎对我非常违反直觉。很高兴能得到任何帮助。
答案 0 :(得分:0)
在此链接上找到答案:https://stackoverflow.com/a/40028178/7546831
显然是一个语言环境问题,在某些地区,根据Java,双打被写为“1,0”而不是“1.0”。但是,可以指定您喜欢的内容。你知道的越多!