forEachIndexed 블록 안의 for 루프 안에서 리스트에 원소를 추가하였다. 이 루프가 끝나고 그 리스트에 원소를 하나 더 추가하자 오류가 발생했다( java.lang.IndexOutOfBoundsException). if 문을 써서 문제를 해결했다.
for 루프 밖에서 원소를 하나 더 추가하자 오류 발생
val numbers: MutableList<MutableList<Int>> // numbers 는 이미 다른 곳에서 초기화 되어 있다. val intervals: MutableList<MutableList<Int>> = mutableListOf()
for (i in 0 until 10) { intervals.add(mutableListOf()) } numbers.forEachIndexed { index, item -> for (i in (1 until item.size)) intervals[index].add(item[i] - item[i - 1]) intervals[index].add(10) }
이렇게 했더니 오류가 발생했다:
java.lang.IndexOutOfBoundsException
if 문을 써서 문제 해결
for 루프 안에서 조건문을 써서 마지막 원소를 추가하자 문제가 해결되었다:
numbers.forEachIndexed { index, item ->
for (i in (1..item.size))
if (i < item.size) {
intervals[index].add(item[i] - item[i - 1])
} else {
intervals[index].add(10)
}
}
논리는 같은데 왜 오류가 나고 안 나고 차이가 있는지 모르겠다.
내 앱의 코틀린 버전은 1.9.10 으로 설정되었다:
id("org.jetbrains.kotlin.android") version "1.9.10" apply false