【问题标题】:This was written in java 12 but if I run it on java 15, it throws an exception error [duplicate]这是用 java 12 编写的,但如果我在 java 15 上运行它,它会引发异常错误 [重复]
【发布时间】:2020-11-02 04:30:26
【问题描述】:

我使用 scanner.NextFloat() 但如果我尝试输入浮点数会引发错误,但是如果我输入 int 数字它会成功转换为双精度或浮点数,有什么问题? 用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

【问题讨论】:

  • 可能是stackoverflow.com/questions/48244290/…中描述的问题
  • Here's 一个类似的问题,但我不确定为什么它在 Java 12 中有效。
  • 很可能是与语言环境相关的问题。您是否尝试为 Scanner 指定区域设置:Scanner scanner = new Scanner(System.in).useLocale(Locale.US);
  • @MDK 谢谢你,这真的很有帮助,虽然我还是不明白为什么会这样。
  • @Alex 请发表您的评论作为答案。

标签: java


【解决方案1】:

这似乎是与Locale 相关的问题。

Scanner指定区域设置:

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

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

【讨论】:

    猜你喜欢
    • 2020-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-05
    相关资源
    最近更新 更多