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

Kotlin中Integer.valueOf(readLine())与readLine()!!.toInt()哪种更优?

Kotlin读取用户输入转整数:两种方案对比分析

先明确两个方案的问题和适用性:

你的实现方案:distance = readLine()!!.toInt()

  • readLine()在输入流关闭时会返回null,!!是非空断言,遇到null直接抛出NullPointerException,在用户输入场景下风险极高,没法保证输入永远有效。
  • toInt()是Kotlin原生扩展函数,语法更贴合Kotlin风格,但硬断言!!属于不安全写法,后续项目里绝对要避免。

提供的标准方案:distance = Integer.valueOf(readLine())

  • 这个方案在Kotlin里编译不通过:readLine()返回可空类型String?,而Java的Integer.valueOf()只接受非空String,必须加非空处理(比如readLine()!!)才能编译。
  • 本质是调用Java工具方法,不如Kotlin原生的toInt()或toIntOrNull()符合语言习惯。

后续项目的推荐写法

如果要安全处理用户输入,绝对不能依赖硬断言,推荐用空安全+转换失败处理:

val distance = readLine()?.toIntOrNull() ?: run {
    println("请输入有效的整数")
    readLine()?.toIntOrNull() ?: 0 // 可根据需求返回默认值或抛出友好异常
}

如果非要从你给出的两个方案里选,你的方案至少语法上能正常运行(虽有崩溃风险),而标准方案需要修改才能编译。但两个方案都不适合后续正式项目使用,必须替换为安全的空值和转换处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 05:03:14