# kotlin 案例实践 ---- 一次四则运算计算器

# 效果

=========请输入你的表达式=========
1+11
1+11=12.0
是否继续使用(y/n)
y
=========请输入你的表达式=========
1-100
1-100=-99.0
是否继续使用(y/n)
y
=========请输入你的表达式=========
1*10
1*10=10.0
是否继续使用(y/n)
y
=========请输入你的表达式=========
1、10
error:你输入的表达式有误
是否继续使用(y/n)
1/10
=========请输入你的表达式=========
是否继续使用(y/n)
n
Process finished with exit code 255

# 代码

// 一次四则运算表达式计算器
fun main() {
    while (true){
        println("=========请输入你的表达式=========")
        val input = readLine()
        try {
            input?.let {
                val ret = calculate(it)
                // 1+1 = 2
                println("${input}=${ret}")
                println("是否继续使用(y/n)")
                val cmd = readLine()
                cmd?.let {
                    if (it == "n") {
                        exitProcess(-1)
                    } else {
                        // 继续实用程序
                    }
                }
            }
        } catch (ex: Exception) {
            ex.printStackTrace()
        }
    }
    // 运行到这里的时候 就结束了
}
fun calculate(input: String): String {
    // input =1+1
    // input =1-10
    // input =1/2
    // input= 1*11
    if (input.contains("+")) {
        val nums = input.trim().split("+")
        return operate(nums[0].toDouble(), nums[1].toDouble(), "+").toString()
    } else if (input.contains("-")) {
        val nums = input.trim().split("-")
        return operate(nums[0].toDouble(), nums[1].toDouble(), "-").toString()
    } else if (input.contains("/")) {
        val nums = input.trim().split("/")
        return operate(nums[0].toDouble(), nums[1].toDouble(), "/").toString()
    } else if (input.contains("*")) {
        val nums = input.trim().split("*")
        return operate(nums[0].toDouble(), nums[1].toDouble(), "*").toString()
    } else {
        return "error:你输入的表达式有误"
    }
}
fun operate(num: Double, num2: Double, operate: String): Double {
    return when (operate) {
        "+" -> num + num2
        "-" -> num - num2
        "/" -> num / num2
        "*" -> num * num2
        else -> 0.0
    }
}