首页 > 解决方案 > java,通过扫描仪方法输入双精度值,数字返回小数错误

问题描述

作为一个java新手,我写下了这段代码:

import java.util.Scanner;

public class EserciziCap2_6_2 {

    public static void main(String[] args) {
        Scanner aaa = new Scanner (System.in);
        System.out.println("inserire x");
        Double x = aaa.nextDouble();
        System.out.println(x);
    }
}

它可以正常工作,没有十进制值,例如 4 返回 4.0,2 返回 2.0,依此类推。但是,如果我输入 1.14,它会返回以下错误:

Exception in thread "main" java.util.InputMismatchException
at java.base/java.util.Scanner.throwFor(Scanner.java:939)
at java.base/java.util.Scanner.next(Scanner.java:1594)
at java.base/java.util.Scanner.nextDouble(Scanner.java:2564)
at EserciziCap2_6_2.main(EserciziCap2_6_2.java:8)

怎么了?

标签: java

解决方案


您必须输入“,”而不是“.”。如果你想使用“。” 作为逗号使用:

 public static void main(String[] args) {

    Scanner aaa = new Scanner (System.in);
    System.out.println("inserire x");
    String input = aaa.nextLine().replace(".", ",");
    Double x = Double.parseDouble(input);
    System.out.println(x);
}

推荐阅读