如何在科特林中将数字更改为负数

How can I change number to negative number in kotlin

absolutes 变量代表一个数字。 当“负数”为“正数”时,符号试图将“-”转换为数字“++”。 我们将解决添加我们更改的所有变量的任务。

a[i] = 绝对值[i].unaryMinus()

在这句话中, 原因:java.lang.ArrayIndexOutOfBoundsException:长度=1;索引=1

出现错误。

我能知道哪一部分是错的吗?

    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 来自 Kotlin 标准库 "Returns an array containing the specified Int numbers".

因此,您的 a 值是 IntArraysize 1。 您不能为 lastIndex 以上的索引赋值,在本例中为 0.

我假设您打算创建一个 IntArray 与您的输入大小相同,默认情况下填充零。

val a = IntArray(absolutes.size)

您创建了一个包含 1 个元素的数组 a,因此在引用 a[1] 时您遇到了 ArrayIndexOutOfBoundsException。 将数组声明为 val a = intArrayOf(0, 0, 0) 或减少初始数组。

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
    }
}