【发布时间】: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
【问题讨论】:
-
Here's 一个类似的问题,但我不确定为什么它在 Java 12 中有效。
-
很可能是与语言环境相关的问题。您是否尝试为 Scanner 指定区域设置:
Scanner scanner = new Scanner(System.in).useLocale(Locale.US);? -
@MDK 谢谢你,这真的很有帮助,虽然我还是不明白为什么会这样。
-
@Alex 请发表您的评论作为答案。
标签: java