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

Kotlin Elvis运算符语法正确运行抛出NumberFormatException异常

问题根因

你代码中使用的?:是Kotlin的Elvis操作符,仅当左侧表达式返回null时,才会取用右侧的默认值。
readLine()的返回规则是:

  • 当到达输入流末尾(比如IDE运行时没配置输入、终端直接按Ctrl+D结束输入)时返回null
  • 当你直接按回车不输入任何内容时,返回的是空字符串"",不是null

你运行时拿到的输入是空字符串,Elvis操作符不会触发默认值"1",空字符串无法调用toInt()转成整数,就抛出了NumberFormatException。教程里讲师运行时要么输入了合法数字,要么所用运行环境无输入时readLine()返回null,和你本地的运行环境行为不一致。

修复方法

把空字符串、全空格的无效输入也纳入默认值触发条件即可,修改后的代码:

fun main() {
    // 输入为null、空串、全空格时都用默认值1
    val x = readLine().takeIf { !it.isNullOrBlank() } ?: "1"
    val y = readLine().takeIf { !it.isNullOrBlank() } ?: "1"
    val z = x.toInt() + y.toInt()
    print(z)
}

如果你用IDE或者在线Kotlin运行环境跑代码,记得提前在输入区域填入合法的数字再运行,也能避免这个报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 17:24:21