You need to enable JavaScript to run this app. Java编写简易计算器输入浮点数触发InputMismatchException崩溃原因
优惠活动
大模型
产品
解决方案
定价
更多

Java编写简易计算器输入浮点数触发InputMismatchException崩溃原因

浮点数输入触发计算器崩溃的原因与修正

核心崩溃原因

错误栈追踪指向的触发点非常明确:

  • 你在读取两个运算值时,调用了scanner.nextInt()方法。这个方法的内置输入校验规则仅接受不带小数部分的整数类型输入,一旦用户输入2.5、-1.3这类带小数点的浮点数,Scanner会因为输入格式和预期的整数类型不匹配,直接抛出InputMismatchException,终止程序运行,和你贴的崩溃日志完全对应。
  • 这里容易出现一个认知偏差:即便你最后把读取到的整数赋值给float类型的变量,这个自动类型转换的过程发生在输入成功读取完成之后,完全改变不了nextInt()本身的输入校验规则,从根源上就不支持浮点数输入场景。

修正方式

只需要把两个运算值的读取方法替换为适配浮点数场景的scanner.nextFloat()即可:

// 原实现(仅支持整数输入)
// float number1 = scanner.nextInt();
// float number2 = scanner.nextInt();

// 修正后(支持浮点数输入)
float number1 = scanner.nextFloat();
float number2 = scanner.nextFloat();

额外优化提示

当前代码存在一个冗余逻辑:在用户选择运算类型之前,就提前计算了加减乘除四个结果。如果用户输入的第二个运算值为0,会直接触发除零运行时异常。可以调整为等用户选定运算类型后,再执行对应分支的计算逻辑,避免非必要的异常触发。

内容的提问来源于stack exchange,提问作者Maximus1999

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.23 12:15:05