You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中Java代码String转Float触发FATAL EXCEPTION怎么解决?

问题根因
  • 崩溃直接触发点是onClick方法中获取税率输入的代码写法错误:你直接对taxText这个EditText控件对象做了字符串转换,拿到的是控件本身的实例描述字符串,不是用户输入的内容,完全不是可转为Float的有效数值,所以抛出NumberFormatException。
  • 另外存在两个隐藏隐患:
    • 你默认给taxText设置的内容带%后缀,就算正确获取输入文本,直接转Float也会因为包含百分号符号报错
    • 税率如果是用户输入的百分比数值(比如输入3代表3%),需要除以100再参与计算,否则结果会完全不符合预期
修复后的代码

首先修改onClick内的逻辑:

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        // 获取商品价格
        price = convertStringToFloat(priceText.getText().toString().trim());
        // 获取税率文本,先去掉百分号再转Float,再除以100得到实际税率
        String taxStr = taxText.getText().toString().trim().replace("%", "");
        tax = Float.parseFloat(taxStr) / 100;

        float _taxes = price * tax;
        finalprice = price + _taxes;

        finalText.setText(String.valueOf(finalprice));
    }
});

可选优化:增加异常捕获逻辑,避免用户输入非数字内容时再次崩溃,可修改convertStringToFloat方法:

public static float convertStringToFloat(String str) {
    if (str == null || str.isEmpty()) {
        return 0f;
    }
    try {
        return Float.parseFloat(str);
    } catch (NumberFormatException e) {
        return 0f;
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 20:27:03