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

Kotlin代码运行App闪退报java.lang.NumberFormatException异常问题

问题原因及修复方案

报错原因

控制台抛出异常:java.lang.NumberFormatException: For input string: "null"

  • 代码中的editTextH、editTextW初始化赋值为null,没有绑定实际的界面控件实例,直接调用editTextH?.text.toString()会把null值转为字符串"null"
  • 调用toFloat()方法时,"null"不属于合法的浮点型数字格式,直接抛出类型转换异常,触发App闪退
  • 如果控件已绑定但页面初始化时直接执行计算逻辑,此时用户还未输入内容,取到的空字符串也会触发同类转换异常

修复方案

第一步:完成控件实例绑定

先通过findViewById或者视图绑定拿到控件真实实例,不要让控件一直处于null状态:

// 替换R.id.xxx为你项目中对应的控件id
editTextH = findViewById(R.id.edit_text_height)
editTextW = findViewById(R.id.edit_text_weight)
result = findViewById(R.id.tv_result)

第二步:增加取值合法性校验

转Float前增加非空校验和异常捕获,处理空输入、非法输入的场景,同时规避除0异常:

// 建议把这段计算逻辑放到按钮点击等用户主动触发的回调中,不要页面刚加载就执行
val hStr = editTextH?.text?.toString()?.trim() ?: "0"
val wStr = editTextW?.text?.toString()?.trim() ?: "0"

val h: Float = try {
    hStr.toFloat() / 100
} catch (e: NumberFormatException) {
    0f // 输入非法时的默认值,可按需调整
}

val w: Float = try {
    wStr.toFloat()
} catch (e: NumberFormatException) {
    0f // 输入非法时的默认值,可按需调整
}

val res: Float = if (h != 0f) w/(h*h) else 0f
result?.text = res.toString()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:54:03