Решение
import java.io.BufferedReader
import java.io.BufferedWriter
import java.io.InputStreamReader
import java.io.OutputStreamWriter
fun main(args: Array<String>) {
// Создаем BufferedReader для чтения ввода
val reader = BufferedReader(InputStreamReader(System.`in`))
// Создаем BufferedWriter для записи вывода
val writer = BufferedWriter(OutputStreamWriter(System.out))
// Читаем входную строку (выражение)
val s = reader.readLine()
// Инициализируем общий результат
var result = 0L
// Инициализируем текущее число, которое парсится
var currentNumber = 0L
// Инициализируем знак для текущего числа (1 для сложения, -1 для вычитания)
// Начинаем с положительного знака, так как первое число всегда положительное
var sign = 1
// Проходим по каждому символу в строке
for (char in s) {
if (char.isDigit()) {
// Если символ - цифра, обновляем текущее число
// Умножаем текущее число на 10 и добавляем значение цифры
currentNumber = currentNumber * 10 + (char - '0')
} else {
// Если символ - оператор ('+' или '-')
// Добавляем (или вычитаем, в зависимости от знака) текущее число к результату
result += sign * currentNumber
// Сбрасываем текущее число для парсинга следующего
currentNumber = 0L
// Обновляем знак в соответствии с текущим оператором
sign = if (char == '+') 1 else -1
}
}
// После цикла нужно добавить последнее число к результату
result += sign * currentNumber
// Записываем итоговый результат в выходной поток
writer.write(result.toString())
// Закрываем ридер и врайтер
reader.close()
writer.close()
}