用 Kotlin 编写四则运算计算器:从零开始的简单教程
🌈个人主页:人不走空
💖系列专栏:算法专题
⏰诗词歌赋:斯是陋室,惟吾德馨

目录
🌈个人主页:人不走空
💖系列专栏:算法专题
⏰诗词歌赋:斯是陋室,惟吾德馨
为什么选择 Kotlin?
需求分析 📝
实现步骤 🚀
1. 设置输入循环
2. 输入第一个数字
3. 输入运算符
4. 输入第二个数字
5. 执行计算并显示结果
完整代码 🌟
小结 ✨
作者其他作品:

在现代编程中,掌握一门编程语言的基础知识至关重要。今天我们将通过一个简单的项目——编写一个四则运算计算器,来学习和实践 Kotlin 语言的基础。这个项目不仅适合初学者,还可以帮助你巩固对 Kotlin 基本语法的理解。准备好了吗?让我们开始吧!
为什么选择 Kotlin?
Kotlin 是一种现代、简洁且强大的编程语言,兼容 Java,并在 Android 开发中广泛使用。其简洁的语法和丰富的功能使得它成为开发各种应用程序的理想选择。从简单的计算器程序入手,可以帮助你快速上手 Kotlin。
需求分析 📝
我们要实现的计算器需要具备以下功能:
- 提示用户输入第一个数字。
- 提示用户输入运算符(+、-、*、/)。
- 提示用户输入第二个数字。
- 根据用户输入的运算符,进行相应的四则运算。
- 显示计算结果。
实现步骤 🚀
让我们一步一步来实现这个计算器。
1. 设置输入循环
首先,我们需要一个循环来不断接受用户的输入,这样用户可以进行多次计算。
fun main() {while (true) {// 后续代码将在这里编写}
}
2. 输入第一个数字
提示用户输入第一个数字,并将其转换为 Double 类型。如果输入无效,提示重新输入。
print("请输入第一个数字: ")
val num1 = readLine()?.toDoubleOrNull()
if (num1 == null) {println("输入无效,请输入一个数字。")continue
}
3. 输入运算符
提示用户输入运算符,并验证输入是否合法。
print("请输入运算符 (+, -, *, /): ")
val operator = readLine()
if (operator != "+" && operator != "-" && operator != "*" && operator != "/") {println("输入无效,请输入一个有效的运算符。")continue
}
4. 输入第二个数字
提示用户输入第二个数字,并将其转换为 Double 类型。如果输入无效,提示重新输入。
print("请输入第二个数字: ")
val num2 = readLine()?.toDoubleOrNull()
if (num2 == null) {println("输入无效,请输入一个数字。")continue
}
5. 执行计算并显示结果
根据用户输入的运算符,使用 when 表达式进行相应的运算,并显示结果。如果遇到除数为 0 的情况,提示错误信息。
val result = when (operator) {"+" -> num1 + num2"-" -> num1 - num2"*" -> num1 * num2"/" -> if (num2 != 0.0) num1 / num2 else {println("错误: 除数不能为0")continue}else -> null
}if (result != null) {println("结果: $num1 $operator $num2 = $result")
} else {println("无效的运算。")
}
完整代码 🌟
将上述各部分代码组合在一起,我们就得到了一个完整的四则运算计算器程序:
fun main() {while (true) {print("请输入第一个数字: ")val num1 = readLine()?.toDoubleOrNull()if (num1 == null) {println("输入无效,请输入一个数字。")continue}print("请输入运算符 (+, -, *, /): ")val operator = readLine()if (operator != "+" && operator != "-" && operator != "*" && operator != "/") {println("输入无效,请输入一个有效的运算符。")continue}print("请输入第二个数字: ")val num2 = readLine()?.toDoubleOrNull()if (num2 == null) {println("输入无效,请输入一个数字。")continue}val result = when (operator) {"+" -> num1 + num2"-" -> num1 - num2"*" -> num1 * num2"/" -> if (num2 != 0.0) num1 / num2 else {println("错误: 除数不能为0")continue}else -> null}if (result != null) {println("结果: $num1 $operator $num2 = $result")} else {println("无效的运算。")}}
}
小结 ✨
通过这个项目,我们学习了如何在 Kotlin 中处理用户输入、进行基本的算术运算、使用 when 表达式进行条件判断,以及如何使用循环来实现连续的用户交互。这些都是 Kotlin 编程的基本技巧,掌握这些技巧将为你进一步学习和开发打下坚实的基础。
你还在等什么?快打开你的 Kotlin 编译器,试试这个简单而有趣的项目吧!如果你在过程中遇到任何问题,欢迎在评论区留言,我们一起探讨解决。Happy coding! 🎉
作者其他作品:
【Java】Spring循环依赖:原因与解决方法
OpenAI Sora来了,视频生成领域的GPT-4时代来了
[Java·算法·简单] LeetCode 14. 最长公共前缀 详细解读
【Java】深入理解Java中的static关键字
[Java·算法·简单] LeetCode 28. 找出字a符串中第一个匹配项的下标 详细解读
了解 Java 中的 AtomicInteger 类
算法题 — 整数转二进制,查找其中1的数量
深入理解MySQL事务特性:保证数据完整性与一致性
Java企业应用软件系统架构演变史
相关文章:
用 Kotlin 编写四则运算计算器:从零开始的简单教程
人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 目录 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌…...
java算法day13
java算法day13 104 二叉树的最大深度111 二叉树的最小深度226 翻转二叉树101 对称二叉树100 相同的树 104 二叉树的最大深度 我最开始想到的是用层序遍历。处理每一层然后计数。思路非常的清楚。 迭代法: /*** Definition for a binary tree node.* public class…...
方便快捷传文件—搭建rsync文件传输服务器
比如我们有一个服务器,想把各个机器的文件都通过脚本传给这台机,用sftp或者直接rsync就必须输密码,肯定不行,做等效性免密又麻烦,怎么办呢,这么办! 在服务端 yum -y install rsync #编辑&…...
python调用qt编写的dll
报错:FileNotFoundError: Could not find module F:\pythonProject\MINGW\sgp4Lib.dll (or one of its dependencies). Try using the full path with constructor syntax. 只有两种情况: 1.路径不对 2.库的依赖不全 1、如果是使用了qt库的࿰…...
SCI一区级 | Matlab实现NGO-CNN-LSTM-Mutilhead-Attention多变量时间序列预测
SCI一区级 | Matlab实现NGO-CNN-LSTM-Mutilhead-Attention多变量时间序列预测 目录 SCI一区级 | Matlab实现NGO-CNN-LSTM-Mutilhead-Attention多变量时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab实现NGO-CNN-LSTM-Mutilhead-Attention北方苍鹰算…...
【Redis】初识 Redis
文章目录 1 什么是 Redis2 Redis 的特点2.1 速度快2.2 可编程性2.3 可拓展性2.4 持久化2.5 主从复制2.5 高可用和分布式2.6 客户端语言多 3 Redis 使用场景3.1 实时数据存储3.2 缓存和 Session 存储3.3 消息队列 4 Redis 重大版本5 CentOS7 安装 Redis5 1 什么是 Redis Redis …...
【PTA天梯赛】L1-003 个位数统计(15分)
作者:指针不指南吗 专栏:算法刷题 🐾或许会很慢,但是不可以停下来🐾 文章目录 题目题解总结 题目 题目链接 题解 使用string把长度达1000位的数字存起来开一个代表个位数的数组 a[11]倒序计算最后一位,…...
c语言位操作符相关题目之交换两个数的值
文章目录 一、题目二、方法11,思路2,代码实现 三、方法21,思路2,代码实现 四、方法31,思路2,代码实现 总结 提示:以下是本篇文章正文内容,下面案例可供参考 一、题目 实现两个变量的…...
智能家居装修怎么布线?智能家居网络与开关插座布置
打造全屋智能家居。计划的智能家居方案以米家系列为主,智能家居联网方案以无线为主。装修前为了装备智能家居做了很多准备工作,本文深圳侨杰智能分享一个智能家居装修和布线方面的心得与实战知识。希望能对大家的装修有所帮助。 1.关于网络 如果房子比…...
GD32MCU最小系统构成条件
大家是否有这个疑惑:大学课程学习51的时候,老师告诉我们51的最小系统构成?那么进入32位单片机时代,gd32最小系统构成又是怎么样的呢? 1.供电电路 需要确保供电的电压电流稳定,以东方红开发版为例ÿ…...
C语言——循环结构:while、do...while、for
while循环 基本结构 C语言中的while循环是一种基本的循环控制结构,它允许程序重复执行一段代码块,直到指定的条件不再满足为止。while循环的语法结构如下: while (condition) { // 循环体 // 在这里编写要重复执行的代码 } condition …...
C#实现最短路径算法
创建点集 double r 200 * 500;double width 1920;double height 1080;int col (int)(r / width);int row (int)(r / height);List<(double, double)> list1 new List<(double, double)>();for (int i 0; i < row; i){var y i * height;if (y < r){va…...
Python函数 之 匿名函数
1.概念 匿名函数: 使用 lambda 关键字 定义的表达式,称为匿名函数. 2.语法 lambda 参数, 参数: 一行代码 # 只能实现简单的功能,只能写一行代码 # 匿名函数 一般不直接调用,作为函数的参数使用的 3.代码 4.练习 # 1, 定义匿名函数, 参数…...
深入解析 Mybatis 中 Mapper 接口的实现原理
《深入解析 Mybatis 中 Mapper 接口的实现原理》 在使用 Mybatis 进行数据库操作时,Mapper 接口扮演着重要的角色。它提供了一种简洁、类型安全的方式来与数据库进行交互。那么,Mybatis 是如何实现 Mapper 接口的呢? 一、Mybatis 简介 Myb…...
微信小程序获取用户头像
微信为了安全更改了许多API接口,属实烦人。这次带来的是微信小程序基础库3.5.0还能使用的获取用户头像方法 按键式 <view><view><button open-type"chooseAvatar" bindchooseavatar"onGetUserImage">获取用户头像</butto…...
uniapp小程序连接蓝牙设备
uniapp小程序连接蓝牙设备 一、初始化蓝牙模块二、开始搜索三、连接蓝牙四、监听特征值变化五、调用示例utils.js文件 一、初始化蓝牙模块 这一步是必须的,在开发项目过程中,初始化蓝牙模块之后,紧接着就要开启一些监听的api,供后…...
AI大模型推理过程与优化技术深度剖析
在人工智能的浩瀚星空中,AI大模型以其卓越的性能和广泛的应用前景,成为了推动技术进步的璀璨明星。本文旨在深入探讨AI大模型的推理过程及其背后的优化技术,为理解这一复杂而精妙的技术体系提供一个清晰的视角。 一、AI大模型的推理过程揭秘 …...
Dubbo 核心概念介绍
Dubbo 是一款阿里巴巴开源的高性能 RPC(远程过程调用)框架,广泛应用于微服务架构中。它主要解决服务治理、负载均衡、故障转移等分布式系统问题。本文将介绍 Dubbo 的核心概念,包括服务提供者(Provider)、服…...
练习 6.7:⼈们 在为练习 6.1 编写的程序中,再创建两个表⽰⼈的字典,然后将这三个字典都存储在⼀个名为 people 的列表中。
练习 6.7:⼈们 在为练习 6.1 编写的程序中,再创建两个表⽰⼈的字典,然后将这三个字典都存储在⼀个名为 people 的列表中。 要求 遍历这个列表,将其中每个⼈的所有信息都打印出来。 代码 human {shuicc: {first_name: shui,la…...
星环科技知识平台TKH:引领企业构建高效AI基础设施,加速数智化转型新纪元
5月30-31日,2024向星力未来数据技术峰会期间,星环科技正式发布其最新人工智能基础设施产品——Transwarp Knowledge Hub星环知识平台(以下简称TKH)。该平台旨在为企业打通从人工智能基础设施建设到大数据、人工智能等研发应用的完…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
python如何将word的doc另存为docx
将 DOCX 文件另存为 DOCX 格式(Python 实现) 在 Python 中,你可以使用 python-docx 库来操作 Word 文档。不过需要注意的是,.doc 是旧的 Word 格式,而 .docx 是新的基于 XML 的格式。python-docx 只能处理 .docx 格式…...
ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
【生成模型】视频生成论文调研
工作清单 上游应用方向:控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...
WebRTC从入门到实践 - 零基础教程
WebRTC从入门到实践 - 零基础教程 目录 WebRTC简介 基础概念 工作原理 开发环境搭建 基础实践 三个实战案例 常见问题解答 1. WebRTC简介 1.1 什么是WebRTC? WebRTC(Web Real-Time Communication)是一个支持网页浏览器进行实时语音…...
华为OD最新机试真题-数组组成的最小数字-OD统一考试(B卷)
题目描述 给定一个整型数组,请从该数组中选择3个元素 组成最小数字并输出 (如果数组长度小于3,则选择数组中所有元素来组成最小数字)。 输入描述 行用半角逗号分割的字符串记录的整型数组,0<数组长度<= 100,0<整数的取值范围<= 10000。 输出描述 由3个元素组成…...
云原生周刊:k0s 成为 CNCF 沙箱项目
开源项目推荐 HAMi HAMi(原名 k8s‑vGPU‑scheduler)是一款 CNCF Sandbox 级别的开源 K8s 中间件,通过虚拟化 GPU/NPU 等异构设备并支持内存、计算核心时间片隔离及共享调度,为容器提供统一接口,实现细粒度资源配额…...
rknn toolkit2搭建和推理
安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 ,不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源(最常用) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...
