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

Kotlin遍历数组对比相邻元素如何避免索引越界异常?

问题根因

数组越界由循环内访问arr[item + 1]的逻辑触发:

  • arr.indices返回的索引范围是0到arr.lastIndex(即arr.size - 1),当循环走到最后一个索引时,item + 1的值等于arr.size,超出数组合法下标范围,直接抛出越界异常。
  • 原代码的两个判断逻辑重复,本质都是统计相邻元素正负符号相反的次数,可以合并简化。
修复方法

核心是收窄遍历范围,只遍历到倒数第二个元素,保证每次访问item + 1都落在合法下标区间内。
修复后完整代码:

fun myFunction(arr: Array<Int>): Int{
    if (arr.isEmpty()) return 0
    var result = 0
    // 遍历上界设为倒数第二个索引,彻底规避item+1越界
    for (item in 0 until arr.size - 1) {
        // 两数相乘小于0即可判定为一正一负,等价于原两个判断的逻辑
        if (arr[item] * arr[item + 1] < 0) {
            result++
        }
    }
    return result
}

调整点说明

  • 遍历范围从全量索引改为0 until arr.size - 1,最后一个元素没有后续相邻元素,直接不参与比较
  • 合并重复的正负判断逻辑,减少冗余代码和重复数组取值操作
  • 兼容单元素数组场景:当数组长度为1时,arr.size -1等于0,0 until 0是空区间,循环不会执行,直接返回0,无越界风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:36:22