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

标签 java double java.util.scanner

这个问题在这里已经有了答案:





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/

    相关文章:

    java - 如何使用 springdoc-openapi-webflux-ui 显示应用程序 API 文档?

    java - Spring security不解析xml

    java - 通过构造函数将值传递到数据库

    c - float 变量如何自动提升为 double 类型?

    Java:当用户输入名称时打开并输出文件

    当 hasNextInt() 遇到输入结束时,Java 突然终止

    java - 调用 socket.close() 时套接字未关闭

    c - 在 C 中生成随机均匀分布的实数

    c - 错误地打印双数

    Java If 循环未执行 : Scanner