java - 这是用 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
解决方案
这似乎是一个Locale
相关的问题。
为 指定语言环境Scanner
:
Scanner scanner = new Scanner(System.in).useLocale(Locale.US);
.
应该有助于解决使用小数分隔符扫描浮点数/双精度数的问题。
推荐阅读
- linux - Unix - sed 命令仅替换由 | 分隔的第一个字符串 在一个文件中
- java - Cisco AXL - 执行 SQL 查询,解析响应
- swift - 无法将“String.Type”类型的值转换为 super.init 的预期参数类型“String”
- python - 无法使用openCV获取对象的中心
- java - 如何在 Spring Boot 中添加对 Swagger 的 I18N 支持
- angular - 如何处理角度异步进度列表的视图
- azure-active-directory - 如何使用 msal.js 从 B2C 强制刷新 id_token 并做出反应
- regex - SAS 从带有 prxchange 或 prxpson(prxmatch(prxparse())) 的字符串中提取子字符串
- python-3.x - 如何关闭 RaspberryPi Cam 的 AWB/AE(Raspi4、RaspiCamV2.1、Python、OpenCV)
- xml - 使用 XSLT 合并重复名称并替换为第一个属性 id