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

Kotlin问题:遍历53元素ArrayList时Log.i仅输出两次0..52

问题分析与解决

你这问题其实一眼就能看出症结——你在循环里打印的是整个parts.indices范围对象,而不是当前的循环变量x!

为什么会出现这个问题?

看你写的代码:

for(x in parts.indices){ Log.i("INFO", parts.indices.toString()) }

每次循环执行时,你调用的是parts.indices.toString(),这个方法返回的是整个索引范围的字符串(比如0..52),而不是当前循环到的x值。哪怕你把循环条件换成x in 0 until parts.size,只要打印的还是整个范围对象,输出结果自然不会变。

至于你说相同写法在其他类里正常,大概率是其他类的循环里打印的是循环变量x,而不是整个范围对象~

修正后的代码

只需要把打印内容换成x的字符串形式就行:

for(x in parts.indices){ 
    Log.i("INFO", x.toString()) 
}

这样就会依次输出0、1、2……一直到52,总共53次,完全符合你的预期。

另外,Kotlin里还有更简洁的遍历索引的方式,推荐试试:

  • 带索引遍历元素(如果需要同时用到元素的话):
parts.forEachIndexed { index, _ ->
    Log.i("INFO", index.toString())
}
  • 直接重复指定次数(更直观):
repeat(parts.size) { index ->
    Log.i("INFO", index.toString())
}

内容的提问来源于stack exchange,提问作者K.W.

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:57:51