Я пытался сделать RPN в Scala, но я получил исключение в консоли
Исключение в потоке "main" scala.MatchError: 1 (из класса
java.lang.Character)
и я останавливаюсь здесь, потому что Intelij не показывает, где проблема. Я думаю, что я неправильно делаю
if (!expr.isEmpty) {
expr.head match
но я провожу несколько часов, думая, как это обменять, и ничего не изобретаю
я делаю эту программу на Java, но в функциональном программировании я не знаю, как правильно использовать это совпадение с хвостом Рекурсивно
object RPN extends App {
print(evaluate("123++"))
def evaluate( expr : String) {
val stack = Stack[Double]()
var a,b :Int=0
@tailrec
def helper ( asset : String){
if (!expr.isEmpty) {
expr.head match {
case it if 0 until 9 contains it => stack.push(expr.head); helper(asset.tail)
case '+' => b = stack.pop.toString().toInt; a = stack.pop.toString().toInt; stack.push(a + b)
case '-' => b = stack.pop.toString().toInt; a = stack.pop.toString().toInt; stack.push(a - b)
case '*' => b = stack.pop.toString().toInt; a = stack.pop.toString().toInt; stack.push(a * b)
case '/' => b = stack.pop.toString().toInt; a = stack.pop.toString().toInt; stack.push(a / b)
}
}
else return stack.pop
}
helper(expr)
}
}