点向我返回MisMatch异常,即使我使用的是Locale.US

问题描述 投票:0回答:1

我尝试输入后,我的程序返回不匹配异常在next.Double()上带点的数字; PS:我正在使用Locale.US

    Scanner sc = new Scanner(System.in);
    Locale.setDefault(Locale.US);

    double nota1, nota2, resultado;

    nota1 = sc.nextDouble();
    nota2 = sc.nextDouble();

    resultado = nota1 + nota2;

    if (resultado < 60.0) {
        System.out.println("NOTA FINAL = " + resultado);
        System.out.println("REPROVADO");
    }
    else {
        System.out.println("NOTA FINAL = " + resultado);
    }

    sc.close();

我尝试在第19行输入:“ 45.5”后收到异常错误消息(nota1 = sc.nextDouble();)。'''

错误消息:

线程“主”中的异常java.util.InputMismatchException在java.util.Scanner.throwFor(Scanner.java:864)在java.util.Scanner.next(Scanner.java:1485)在java.util.Scanner.nextDouble(Scanner.java:2413)在application.Program.main(Program.java:19)

java mismatch
1个回答
0
投票

您只需要将第一行的顺序更改为:

Locale.setDefault(Locale.US);
Scanner sc = new Scanner(System.in);

要先创建系统默认语言环境,然后再创建扫描仪。创建新的扫描仪时,它将获取并使用在创建时设置的默认语言环境,因此必须在扫描仪初始化之前完成默认语言环境的设置。

或者,您也可以使用:

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

直接设置要在扫描仪上使用的语言环境,而无需修改默认语言环境。

© www.soinside.com 2019 - 2024. All rights reserved.