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
相关产品推荐
相关产品推荐

