接受三个字符串参数的Scala计算器

时间:2018-11-19 07:20:37

标签: scala functional-programming

如何编写一种称为计算器的方法,该方法接受三个字符串参数:

def calculator(operand1: String, operator: String, operand2: String): Unit

将操作数转换为Int; 在两个操作数上执行所需的数学运算符(+,-,*或/) 打印结果或一般错误消息

1 个答案:

答案 0 :(得分:1)

您的问题表明,您自己付出了很少的努力来找到解决方案。

下一次在StackOverflow上提问时,请询问有关现有代码的问题(例如“为什么会收到此异常?”或“为什么我的代码不会编译?”),并且不要以为是互联网代码猴子会神奇地编写您的代码。


无论如何,由于您似乎是SO的新成员,def calculator看起来像这样:

import scala.collection.immutable.StringOps._
import scala.util.{Try, Success, Failure}

def calculator(left: String, op: String, right: String): Unit = {

  def parse(value: String) = Try(value.toDouble)

  (parse(left), parse(right)) match {
    case (Success(leftDouble), Success(rightDouble)) => {
      op match {
        case "/" => println(leftDouble / rightDouble)
        case "*" => println(leftDouble * rightDouble)
        case "+" => println(leftDouble + rightDouble)
        case "-" => println(leftDouble - rightDouble)
        case invalid: String => println(s"Invalid operator $invalid.")
      }
    }
    case (Failure(e), _) => println(s"Could not parse $left.")
    case(_, Failure(e)) => println(s"Could not parse $right.")
    case(Failure(e1), Failure(e2)) => println(s"Could not parse $left and $right.")
  }

}

Try it out!

如果您需要任何解释,请随时发表评论。

我希望这会有所帮助。