首页 > 解决方案 > 总结运算符前后的所有数字登录字符串用户输入

问题描述

我是编程新手,刚开始使用 kotlin。我已经被这个问题困扰了几天,我真的需要一些帮助。我正在尝试以这样的格式读取字符串的用户输入 3 + 2 + 1,遍历字符串以及任何有运算符的地方,将运算符符号前后的数字相加。所以上面3 + 2 + 1应该输出6。这是我的代码片段

fun main() {
val userInput = readLine()!!.split(" ")
var sum = 0
for (i in 0 until userInput.size) {
    if (userInput.get(i) == "+"){
        sum += userInput.get(i-1).toInt() + userInput.get(i+1).toInt()
    }

}
println(sum )

}

我的代码一直有效,直到将数字相加为止。它在运算符之后重复下一个数字,因此使用上面的示例3 + 2 + 1 输出。我很困惑,不知道该怎么办。83 + 2 + 2 + 1

标签: kotlin

解决方案


尽量不要每次都增加 sum 的值,而是重写参与 sum 的最后一个数字。就像这样:

你有这样的情况:1 + 2 + 3 + 4

  1. 拆分它们

  2. 现在你有了数组[1, +, 2, +, 3, +, 4]

  3. 然后你迭代这个数组,坚持第一个加号并对值求和。

  4. 用总和重写第二个总和值。

  5. 现在你有了新数组[1, +, 3, +, 3, +, 4]

  6. 在循环结束时,您将拥有这个数组[1, +, 3, +, 6, +, 10]

  7. 你的总和是数组的最后一个元素


推荐阅读