当我用逗号或小数点分隔小数时,扫描会翻倍 [英] Scanning doubles when I separate decimals with comma or dot

查看:82
本文介绍了当我用逗号或小数点分隔小数时,扫描会翻倍的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我是Java的新手,当时我在做一个简单的计算器。问题是,当我输入的数字是 3.1时,它会给出异常错误,但是在写 3,1时,它就可以了。

I'm rather new to Java and I was making a simple calculator. Problem is when I my input number is for example "3.1" it gives an exception error, but when writing "3,1" it works just fine.

我的朋友,但是,它有一个更高级的计算器(带有字符串解析),当我运行他的代码时,情况恰恰相反:3,1给出了异常错误,3.1可以正常工作。

My friend, however, has a slightly more advanced calculator (with string parsing) and when I run his code the opposite happens: 3,1 gives exception error, 3.1 works perfectly.

I我很想知道是什么原因导致了这些不同的行为。

I was looking forward to know what causes these different behaviors.

我刚才做了一个简单的总结,同样的事情发生了,我将编辑他的计算器代码,分钟

I made this simple sum just now and the same happens, I'll edit and put his calculator code in a few minutes

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()。知道了,区别确实在于它的本地化。本来应该寻找它,但之前从未听说过这个概念。

Final edit: He does use Double.parseDouble(). Got it, the difference is indeed in where it is localized. Should have looked for it but never heard of this concept before.

谢谢

推荐答案

因为您使用的是差异 Local 可以用一个点扫描它。和另一个用逗号修复它,您应该像这样修复您的扫描仪:

Because you are using difference Local for that one can scan it with a dot . and another with a comma , to fix it you should to fix one for your Scanner like this :

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

例如:


  • 如果您使用的是 Local.US ,则应使用扫描双精度。
    6.6

  • 如果您使用的是 Locale.FRENCH ,您应使用
    a 扫描您的双精度,如 6,6

  • If you are using Local.US you should to scan your double with a . like 6.6
  • If you are using Locale.FRENCH you should to scan your double with a , like 6,6

这篇关于当我用逗号或小数点分隔小数时,扫描会翻倍的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆