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

如何在Kotlin中无限遍历JSONArray且避免‘Val cannot be reassigned’错误?

Kotlin实现JSONArray无限遍历的解决方法

你原来的代码存在两个核心问题:

  1. Kotlin中for (i in 0 until length)循环里的i是只读的val,无法重新赋值,因此会触发“Val cannot be reassigned”错误;
  2. 循环条件为0 until arrayValue.length(),i的最大值是arrayValue.length() - 1,所以i.equals(arrayValue.length())的判断永远不会生效。

以下是两种可行的实现方案:

方法一:使用while循环手动控制索引

用var定义可修改的索引变量,通过取模运算自动实现循环遍历:

var i = 0
val arrayLength = arrayValue.length()
while (true) {
    // 执行你的操作,例如获取当前元素
    val currentItem = arrayValue.get(i)
    // ... 编写你的业务逻辑

    // 索引自增,到达数组末尾后自动重置为0
    i = (i + 1) % arrayLength
}

方法二:生成无限序列配合for循环

通过generateSequence创建无限循环的索引序列,更契合Kotlin的函数式编程风格:

val arrayLength = arrayValue.length()
for (i in generateSequence(0) { (it + 1) % arrayLength }) {
    // 执行你的操作
    val currentItem = arrayValue.get(i)
    // ... 编写你的业务逻辑

    // 若需要终止无限循环,可在此添加break条件
    // if (stopCondition) break
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 21:44:56