Java税费计算程序小数输入报错问题及小数与整数相乘方法
问题解决:Java解析小数输入抛出NumberFormatException
问题根源
你用Integer.parseInt()解析像.23这样的小数字符串,而Integer类型只能处理纯整数格式的输入,小数包含小数点,不符合整数的语法规则,直接触发NumberFormatException。
修复方案
把整数类型替换为浮点类型(比如double),用Double.parseDouble()来解析小数输入,同时调整计算和输出逻辑:
package apples; import javax.swing.JOptionPane; import java.text.DecimalFormat; class apples { public static void main(String[] args) { try { String assessmentInput = JOptionPane.showInputDialog("Enter assessment value"); String taxRateInput = JOptionPane.showInputDialog("Enter local tax rate"); // 用Double.parseDouble解析小数输入 double assessmentValue = Double.parseDouble(assessmentInput); double taxRate = Double.parseDouble(taxRateInput); // 计算税费 double taxAmount = assessmentValue * taxRate; // 格式化输出为两位小数,符合金额显示规范 DecimalFormat df = new DecimalFormat("#.##"); JOptionPane.showMessageDialog(null, "Tax amount: " + df.format(taxAmount)); } catch (NumberFormatException e) { // 处理非数字输入的异常 JOptionPane.showMessageDialog(null, "请输入有效的数字格式"); } } }
关键修改点
- 用
Double.parseDouble()替代Integer.parseInt(),支持解析.23这种省略整数位的小数格式 - 变量类型从
int改为double,适配小数乘法计算 - 添加
try-catch块捕获非数字输入的异常,提升程序健壮性 - 用
DecimalFormat格式化输出结果,让金额显示更直观规范
内容的提问来源于stack exchange,提问作者Adam Toland
相关产品推荐
相关产品推荐

