La variable absoluta representa un número. El signo intenta convertir "-" en un número "++" cuando "número negativo" es "número positivo". Vamos a resolver la tarea de sumar todas las variables que cambiamos.
a[i] = absolutos[i].unaryMinus()
En esta oración, Causado por: java.lang.ArrayIndexOutOfBoundsException: length=1; índice=1
Aparece un error.
¿Puedo saber qué parte está mal?
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")intArrayOf de la biblioteca estándar de Kotlin "Devuelve una matriz que contiene los números Int especificados" .
Por lo tanto, su valor de a es un IntArray de size 1. No puede asignar valores a índices por encima de lastIndex , que en este caso es 0.
Supongo que pretendía crear un IntArray del mismo tamaño que su entrada, lleno de ceros de forma predeterminada.
val a = IntArray(absolutes.size)Ha creado una matriz a con 1 elemento, por lo que al hacer referencia a[1] está presionando la ArrayIndexOutOfBoundsException. Declare la matriz como val a = intArrayOf(0, 0, 0) o reduzca la matriz inicial.
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 } }