The absolutes variable represents a number. The sign attempts to convert "-" into a number " " when "negative number" is "positive number". We're going to solve the task of adding all the variables that we changed.
a[i] = absolutes[i].unaryMinus()
In this sentence, Caused by: java.lang.ArrayIndexOutOfBoundsException: length=1; index=1
An error appears.
Can I know which part is wrong?
val absolutes = intArrayOf(4,7,12)
val sign = arrayOf(true,false,true)
val a = intArrayOf(0)
for (i in absolutes.indices){
if (!sign[i]) {
a[i] = absolutes[i].unaryMinus()
}
}
val result = a.sum()
Log.d(logTag, "onCreate is called result = $result")
CodePudding user response:
intArrayOf
from the Kotlin standard library "Returns an array containing the specified Int numbers".
Thus, your value of a
is an IntArray
of size
1.
You cannot assign values to indices above the lastIndex
, which in this case is 0.
I assume you aimed to create an IntArray
of the same size as your input, filled with zeroes by default.
val a = IntArray(absolutes.size)
CodePudding user response:
You have created an array a
with 1 element so when referencing a[1]
you are hitting the ArrayIndexOutOfBoundsException.
Either declare the array as val a = intArrayOf(0, 0, 0) or reduce the initial array.
val absolutes = intArrayOf(4, 7, 12)
val sign = arrayOf(true, false, true)
absolutes.foldIndexed(0) { index, acc, element ->
return@foldIndexed if (sign[index]) {
acc - element
} else {
acc element
}
}