Kotlin:使用Kotlin开发一个命令行计算器

简介: 一、下面我们就来开发一个基于命令行的计算器 新建一个counter.kt文件package net.println.kotlin.

一、下面我们就来开发一个基于命令行的计算器
新建一个counter.kt文件

package net.println.kotlin.chapters

/**
 * @author:wangdong
 * @description:使用kotlin开发一个命令行计数器
 */

fun main(args: Array<String>) {
    while (true) {
        try {
            println("请输入算式,例如: 3 + 4,用空格隔开")
            //从命令行读取,如果读到的null,直接break
            val input = readLine() ?: break
            //读取结果可能为空。所以要作非空校验
            //用空格切割,trim去掉字符串首位的空白
            val splits = input.trim().split(" ")
            if (splits.size < 3){
                throw IllegalArgumentException("参数格数不对")
            }
            //第一个参数
            val arg1 = splits[0].toDouble()
            //第二个参数
            val op = splits[1]
            //第三个参数
            val arg2 = splits[2].toDouble()

            //将结果打印出来
            println("$arg1 $op $arg2 = ${Operator(op).apply(arg1, arg2)}")
        }catch (e: NumberFormatException){
            println("请按照正常的格式输入")
        }catch (e: IllegalArgumentException){
            println("您确定您的输入是用空格分割的吗?")
        }catch (e: Exception){
            println("您好,程序遇到了未知的错误,错误信息是${e.printStackTrace()}")
        }
        println("再来一次?[Y]")
        val cmd = readLine()
        if (cmd == null || cmd.toLowerCase() != "y") {
            break
        }
    }
    //用户退出后,需要感谢用户的使用
    println("感谢您使用了熊本同学的计算器")
}
/**定义一个类*/
class Operator(op: String){
    //定义一个opFun,使用lambda表达式
    val opFun:(left: Double,right: Double) -> Double

    init {
        opFun = when(op){
            "+" -> {l,r -> l + r}
            "-" -> {l,r -> l - r}
            "*" -> {l,r -> l * r}
            "/" -> {l,r -> l / r}
            "%" -> {l,r -> l % r}
            else ->{
                throw UnsupportedOperationException(op)
            }
        }
    }
    //定义一个方法
    fun apply(left: Double, right: Double): Double{
        return opFun(left,right)
    }
}

输出的结果:

请输入算式,例如: 3 + 4,用空格隔开
4 + 4323
4.0 + 4323.0 = 4327.0
再来一次?[Y]
y
请输入算式,例如: 3 + 4,用空格隔开
431 * 323
431.0 * 323.0 = 139213.0
再来一次?[Y]
y
请输入算式,例如: 3 + 4,用空格隔开
41 +2
您确定您的输入是用空格分割的吗?
再来一次?[Y]
y
请输入算式,例如: 3 + 4,用空格隔开
7 ** 22
java.lang.UnsupportedOperationException: **
    at net.println.kotlin.chapters.Operator.<init>(counter.kt:58)
    at net.println.kotlin.chapters.CounterKt.main(counter.kt:28)
您好,程序遇到了未知的错误,错误信息是kotlin.Unit
再来一次?[Y]
n
感谢您使用了熊本同学的计算器

是不是很赞!

目录
相关文章
|
2月前
|
安全 Java Android开发
Kotlin入门实用开发技巧与注意事项
本文源自公众号“AntDream”。Kotlin是由JetBrains开发的现代编程语言,自2017年成为Android官方开发语言后迅速流行。本文作者分享了Kotlin的实用技巧,包括变量声明、空安全、扩展函数等,帮助初学者避免常见问题。
72 15
|
3月前
|
安全 Java Android开发
探索安卓开发的未来:Kotlin语言的崛起与挑战
在这篇文章中,我们将深入探讨Kotlin语言在安卓开发领域的应用及其对传统Java开发的颠覆性影响。通过分析Kotlin的特性、社区支持以及在实际项目中的应用案例,我们揭示了这一现代编程语言如何为开发者提供更简洁、更安全的编程体验,并讨论了它在面对性能优化和向后兼容性时所面临的挑战。文章旨在为读者呈现一个全面的视角,评估Kotlin作为未来安卓开发主流语言的可能性。
72 1
|
5月前
|
安全 Java Android开发
安卓开发中的新趋势:Kotlin与Jetpack的完美结合
【6月更文挑战第20天】在不断进化的移动应用开发领域,Android平台以其开放性和灵活性赢得了全球开发者的青睐。然而,随着技术的迭代,传统Java语言在Android开发中逐渐显露出局限性。Kotlin,一种现代的静态类型编程语言,以其简洁、安全和高效的特性成为了Android开发中的新宠。同时,Jetpack作为一套支持库、工具和指南,旨在帮助开发者更快地打造优秀的Android应用。本文将探讨Kotlin与Jetpack如何共同推动Android开发进入一个新的时代,以及这对开发者意味着什么。
|
28天前
|
JavaScript Java Kotlin
Kotlin开发笔记 - 常量与变量
Kotlin开发笔记 - 常量与变量
29 2
|
29天前
|
JavaScript Java Kotlin
|
28天前
|
IDE 开发工具 Kotlin
Kotlin开发笔记 - 参数与异常
本教程详细讲解Kotlin语法,适合深入学习。若需快速掌握,可参考“简洁”系列教程。内容涵盖具名参数、变长参数、默认参数、多返回值及异常处理等核心概念,助你高效编程。
18 1
|
28天前
|
Java 开发者 Kotlin
Kotlin开发笔记- 分支与循环
本系列教程详细讲解了Kotlin语法,适合需要深入了解Kotlin的开发者。若需快速学习Kotlin,可参考“简洁”系列教程。本文重点介绍了Kotlin中的分支语句(if...else 和 when)及循环语句(for 和 while),并提供了丰富的示例代码,帮助读者掌握这些核心语法。
25 1
|
13天前
|
Java API Android开发
kotlin和java开发优缺点
kotlin和java开发优缺点
28 0
|
29天前
|
Kotlin
|
29天前
|
Java Kotlin 索引
Kotlin开发笔记- 分支与循环
Kotlin开发笔记- 分支与循环
40 0