这个问题在这里已经有了答案:
Scanner double value - InputMismatchException
(2 个回答)
10 个月前关闭。
我对 Java 比较陌生,我正在制作一个简单的计算器。问题是当我输入的数字是例如“3.1”时,它会给出一个异常错误,但是当写入“3,1”时它工作得很好。
然而,我的 friend 有一个稍微更高级的计算器(带字符串解析),当我运行他的代码时,情况正好相反:3,1 给出异常错误,3.1 完美运行。
我很期待知道是什么导致了这些不同的行为。
我刚刚做了这个简单的总结,同样的事情发生了,我会在几分钟内编辑并放置他的计算器代码
import java.util.Scanner;
public class Tutorial_7 {
public static void main(String args[]){
Scanner scan = new Scanner(System.in);
double num1, num2;
System.out.println("Introduza os dois números");
System.out.println("1º: ");
num1 = scan.nextDouble();
System.out.println("2º: ");
num2 = scan.nextDouble();
System.out.println((num1 + num2));
scan.close();
}
}
最终编辑:他确实使用了
Double.parseDouble()
.明白了,区别确实在于它的本地化位置。应该寻找它,但以前从未听说过这个概念。谢谢
最佳答案
因为你用的是差异Local
因为那个人可以用一个点扫描它.
另一个带逗号 ,
要修复它,您应该像这样为您的扫描仪修复一个:
Scanner scan = new Scanner(System.in).useLocale(Locale.US);
例如:
Local.US
你应该用 .
扫描你的替身喜欢
6.6
Locale.FRENCH
你应该用,
喜欢 6,6
关于java - 当我用逗号或点分隔小数时,扫描会加倍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42332273/