为什么在获取Double值时会出现InputMismatchException?
在Java中,当使用Scanner读取Double值时,如果输入不严格遵循预期的十进制格式。
理解问题:
提供的代码包含 checkValueWithin 和askForMarks 方法。 checkValueWithin 旨在验证指定范围内的数字输入。
问题出现在askForMarks 方法中,其中用户输入预计为 0 到 30 范围内的双精度值。但是,输入可能会被格式化不正确,导致扫描程序在解析双精度值时失败。
修复:
可以通过确保用户输入的格式使用逗号作为格式来解决小数点分隔符而不是点。例如,输入 1,2,而不是 1.2。这与 Java 中的双精度值表示一致。
以下是 AskForMarks 的修改后的代码:
public void askForMarks() { double marks[] = new double[student]; int index = 0; Scanner reader = new Scanner(System.in); while (index < student) { System.out.print("Please enter a mark (0..30): "); marks[index] = (double) checkValueWithin(0, 30); index++; } }
此修改可确保正确输入双精度值,从而防止 Scanner 遇到 InputMismatchException。
以上是为什么在使用扫描仪读取双精度值时会出现 InputMismatchException?的详细内容。更多信息请关注PHP中文网其他相关文章!