首页 > 解决方案 > 这是用 java 12 编写的,但如果我在 java 15 上运行它,它会引发异常错误

问题描述

我使用了scanner.NextFloat(),但是如果我尝试输入浮点数,它会抛出一个错误,但是如果我输入int numbers,它会成功转换为double 或float,有什么问题?用 java 12 编写,我试图在 java 15 上运行它。

import java.text.NumberFormat;
import java.util.Locale;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);

        System.out.print("Principal: ");
        float principal = scanner.nextFloat();

        System.out.print("Annual Interest Rate: ");
        float annualInterestRate = scanner.nextFloat();
}
}
Principal: 88888
Annual Interest Rate: 9.8
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.nextFloat(Scanner.java:2496)
    at com.company.Main.main(Main.java:16)

Process finished with exit code 1

标签: java

解决方案


这似乎是一个Locale相关的问题。

为 指定语言环境Scanner

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

.应该有助于解决使用小数分隔符扫描浮点数/双精度数的问题。


推荐阅读