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

Android开发:Java中CharSequence转Int及解决NumberFormatException问题

解决输入框金额转整数时的NumberFormatException崩溃问题

针对你遇到的输入为空时触发NumberFormatException导致崩溃的问题,这里提供两种可靠的解决思路,直接上代码和说明:

1. 先校验输入合法性 + 异常捕获(直观写法)

先过滤空输入和全空格的情况,再通过try-catch包裹转换逻辑,彻底避免崩溃:

CharSequence inputContent = edt_nma_amount.getText();
// 先排除空输入和仅含空格的无效输入
if (!TextUtils.isEmpty(inputContent) && inputContent.toString().trim().length() > 0) {
    try {
        int amount = Integer.parseInt(inputContent.toString().trim());
        // 根据金额判断是否显示理由框
        tilNmaReason.setVisibility(amount >= 100 ? View.VISIBLE : View.GONE);
    } catch (NumberFormatException e) {
        // 输入不是有效整数(比如字母、小数、特殊字符),隐藏理由框
        tilNmaReason.setVisibility(View.GONE);
    }
} else {
    // 输入为空或全空格,隐藏理由框
    tilNmaReason.setVisibility(View.GONE);
}

2. 封装安全转换工具方法(复用性更强)

把字符串转整数的逻辑封装成工具方法,统一处理空值和异常,让业务代码更简洁:

// 工具方法:安全将字符串转为整数,失败时返回指定默认值
private int safeParseInt(String inputStr, int defaultValue) {
    if (inputStr == null || inputStr.trim().isEmpty()) {
        return defaultValue;
    }
    try {
        return Integer.parseInt(inputStr.trim());
    } catch (NumberFormatException e) {
        return defaultValue;
    }
}

// 使用示例
String inputStr = edt_nma_amount.getText().toString();
int amount = safeParseInt(inputStr, 0);
tilNmaReason.setVisibility(amount >= 100 ? View.VISIBLE : View.GONE);

关键注意点

  • 必须调用trim():处理用户仅输入空格的情况,避免把全空格字符串误判为有效输入
  • 异常捕获覆盖所有无效场景:除了空字符串,用户输入字母、小数、特殊字符都会触发NumberFormatException,必须捕获
  • 默认状态符合业务逻辑:当输入不合法时,默认隐藏理由框,避免不符合要求的输入触发错误显示

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 19:10:31