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

Kotlin实现键盘录入数组并输出时运行报错的解决方法

问题原因

代码触发异常的核心原因是Kotlin的区间语法使用错误:

  • 0..n 是双端闭区间,遍历的时候会包含端点n。比如输入数组大小为3,0..3会依次取0、1、2、3四个值
  • 长度为n的数组,合法索引范围是0 ~ n-1,不存在索引为n的元素。当代码执行到访问arr[array_size]时,就会抛出ArrayIndexOutOfBoundsException数组越界异常。
修正方案

将两处循环的区间从0..array_size替换为0 until array_size即可。until生成的是左闭右开区间,遍历范围是0到array_size-1,刚好匹配数组的合法索引。
修正后的可运行代码:

fun main() {
    val arraySize = readLine()!!.toInt()
    val arr = IntArray(arraySize)
    for (i in 0 until arraySize) {
        arr[i] = readLine()!!.toInt()
    }

    for (i in 0 until arraySize) {
        println(arr[i])
    }
}

更稳妥的写法是直接使用数组内置的indices属性获取合法索引范围,或者直接遍历数组元素,完全避免手动计算索引出错:

fun main() {
    val arraySize = readLine()!!.toInt()
    val arr = IntArray(arraySize)
    // 用内置索引范围录入
    for (i in arr.indices) {
        arr[i] = readLine()!!.toInt()
    }
    // 直接遍历元素输出,不需要索引
    for (num in arr) {
        println(num)
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 03:51:20