当我用逗号或点分隔小数时,扫描会加倍

时间:2017-02-19 20:07:47

标签: java double java.util.scanner

我是Java的新手,我正在制作一个简单的计算器。问题是当我的输入数字是例如" 3.1"它给出了一个异常错误,但在编写" 3,1"它运作得很好。

然而,我的朋友有一个稍微高级的计算器(使用字符串解析),当我运行他的代码时,相反的情况发生: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()。知道了,区别在于它的本地化。应该寻找它但从未听过这个概念。

谢谢

1 个答案:

答案 0 :(得分:1)

因为您使用差异Local,因此可以使用点.进行扫描,使用逗号,进行扫描以修复它,您应该为您的扫描仪修复一个:

Scanner scan = new Scanner(System.in).useLocale(Locale.US);

例如:

  • 如果您使用Local.US,则应使用.扫描双倍 像6.6
  • 如果您使用Locale.FRENCH,则应该扫描双倍 一个,,如6,6