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

Kotlin读取控制台输入时输入/exit触发IndexOutOfBoundsException求助

解决Kotlin控制台输入解构赋值的IndexOutOfBoundsException问题

原代码中,当输入/exit时,split(" ")仅返回单个元素,但解构赋值给两个变量会触发IndexOutOfBoundsException——Kotlin的解构赋值要求集合元素数量与变量数量严格对应。

修复步骤

  • 先捕获输入内容,避免直接使用!!强制非空(可能引发空指针异常)
  • 优先判断退出指令,跳过后续分割逻辑
  • 对输入分割结果做长度校验,过滤无效输入

完整修复代码

fun main() {
    while (true) {
        print("Enter two numbers in format: {source base} {target base} (To quit type /exit) ")
        // 处理输入为null的情况(如用户按下Ctrl+D)
        val input = readLine() ?: break
        
        val trimmedInput = input.trim()
        // 优先处理退出指令
        if (trimmedInput == "/exit") {
            println("程序退出")
            break
        }
        
        // 分割输入并过滤空字符串(避免多空格导致的无效元素)
        val parts = trimmedInput.split(" ").filter { it.isNotEmpty() }
        // 校验分割结果长度
        if (parts.size != 2) {
            println("输入格式错误,请输入两个用空格分隔的数字,或输入/exit退出")
            continue
        }
        
        // 安全解构赋值
        val (sourceBase, targetBase) = parts
        // 这里添加你的进制转换逻辑
        println("源进制:$sourceBase,目标进制:$targetBase")
    }
}

关键说明

  1. 避免强制非空:用?: break替代!!,防止输入为null时触发空指针异常
  2. 提前处理退出指令:直接跳过分割逻辑,从根源避免不匹配的解构赋值
  3. 输入校验:过滤空字符串并检查分割结果长度,覆盖用户输入单个数字、多空格等无效场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 10:20:46