Kotlin开发(三):编程趣事,变量、判断和循环的三角恋
引言
有没有那么一段代码,让你越写越上头?从数据类型到条件判断,再到循环控制,每个编程语言都能凭这仨基础概念搅动江湖,而 Kotlin,简直是高手中的高手。这篇文章,就是为让你深刻体会“基础即王道”的真谛。今天我们聊聊 Kotlin 的基本功,为什么选它?因为 Kotlin 好用到“香疯了”!掌握它,Android 开发、后端构建、甚至日常脚本都如鱼得水。来吧,别犹豫了,进入 Kotlin 的奇妙世界,写代码快乐得像追剧!
一、背景
Kotlin 是 2017 年 Google 官方认证的 Android 开发语言,自发布以来,它凭借简洁高效的语法设计、一流的安全性和完全的 JVM 兼容性,迅速风靡开发界。它不仅能写 Android 应用,还能用于后端开发、Web 开发,甚至是数据科学,实在是一把开发界的“瑞士军刀”。而 Kotlin 中的基本数据类型、条件控制和循环控制,则是它这把“刀”的锋刃部分。不熟悉这些,就像厨师不会用刀,写代码哪能顺手?
二、Kotlin
1. 数据类型:
Kotlin 语言的基本数据类型分为可空和不可空两类,常见的有 Int、Float、Double、Boolean 等。你可以通过类型推断省略声明,代码从此更优雅。
2. 条件控制:
条件判断用 if-else
和 when
表达式。when
是 Kotlin 中的杀手锏,比 Java 的 switch
更灵活,甚至可以当替代变量赋值语句用。
3. 循环控制:
从 for
到 while
,再到 do-while
,每一种都有自己独特的适用场景。同时,for
配合 ranges (..
) 更像魔法,轻松操作区间。
三、实现
环境准备
- 下载并安装 IntelliJ IDEA。
- 配置 Kotlin 插件(通常默认自带)。
- 创建 Kotlin 项目,选择 JVM 环境即可。
四、实例
案例一:计算器
需求:实现一个简单的四则运算计算器,支持加减乘除。
fun main() {
println("请输入两个数字和一个操作符(+,-,*,/):")
val num1 = readLine()!!.toDouble()
val operator = readLine()!!
val num2 = readLine()!!.toDouble()
val result = when (operator) {
"+" -> num1 + num2
"-" -> num1 - num2
"*" -> num1 * num2
"/" -> if (num2 != 0.0) num1 / num2 else "除数不能为零"
else -> "无效操作符"
}
println("计算结果是:$result")
}
案例二:用户登录模拟
需求:设计一个简单的登录验证程序。
fun main() {
val users = mapOf("admin" to "1234", "user" to "abcd")
println("请输入用户名:")
val username = readLine()!!
println("请输入密码:")
val password = readLine()!!
if (users[username] == password) {
println("登录成功!欢迎 $username")
} else {
println("用户名或密码错误!")
}
}
案例三:九九乘法表
需求:打印标准九九乘法表。
fun main() {
for (i in 1..9) {
for (j in 1..i) {
print("$j * $i = ${i * j}\t")
}
println()
}
}
案例四:随机抽奖程序
需求:实现一个随机抽奖程序,从一组参与者中随机抽取获奖者,并支持多次抽奖。
代码实现:
fun main() {
val participants = listOf("Alice", "Bob", "Charlie", "Diana", "Ethan")
println("参与抽奖的人员:$participants")
println("请输入要抽取的奖项数量:")
val numWinners = readLine()!!.toInt()
if (numWinners <= participants.size) {
val winners = participants.shuffled().take(numWinners)
println("恭喜获奖者:$winners")
} else {
println("奖项数量不能超过参与人数!")
}
}
实现过程:
- 使用
listOf
创建参与者列表。 - 使用
shuffled
方法随机打乱列表顺序。 - 用
take(n)
选择前n
个随机获奖者。
案例五:商品购物车系统
需求:开发一个简单的购物车程序,支持添加商品、查看购物车以及结算功能。
代码实现:
fun main() {
val cart = mutableMapOf<String, Int>()
while (true) {
println("\n请选择操作:1. 添加商品 2. 查看购物车 3. 结算并退出")
when (readLine()!!.toInt()) {
1 -> {
println("请输入商品名称:")
val product = readLine()!!
println("请输入商品数量:")
val quantity = readLine()!!.toInt()
cart[product] = cart.getOrDefault(product, 0) + quantity
println("$product 已添加到购物车!")
}
2 -> {
println("购物车内容:")
if (cart.isEmpty()) {
println("购物车为空!")
} else {
cart.forEach { (product, quantity) ->
println("$product x $quantity")
}
}
}
3 -> {
println("结算中...")
val totalItems = cart.values.sum()
println("共购买 $totalItems 件商品,感谢购物!")
break
}
else -> println("无效选择,请重新输入!")
}
}
}
实现过程:
- 使用
mutableMapOf
保存商品及其数量。 - 通过
getOrDefault
方法更新商品数量。 - 提供菜单选项,让用户动态操作购物车内容。
案例六:天气查询模拟器
需求:模拟天气查询系统,用户输入城市名,返回该城市的天气信息(模拟数据)。
代码实现:
fun main() {
val weatherData = mapOf(
"Beijing" to "晴天,气温 15°C",
"Shanghai" to "小雨,气温 18°C",
"Guangzhou" to "多云,气温 22°C",
"Shenzhen" to "晴转多云,气温 24°C"
)
println("请输入城市名称(如 Beijing, Shanghai):")
val city = readLine()!!
val weather = weatherData[city]
if (weather != null) {
println("【$city】的天气情况:$weather")
} else {
println("抱歉,暂未收录【$city】的天气信息。")
}
}
实现过程:
- 使用
mapOf
存储城市与天气的对应关系。 - 用户输入城市名,通过
map
直接查询结果。 - 提供未收录城市的处理逻辑,确保程序健壮性。
实现总结
这几个项目从实用工具到娱乐程序,涵盖了不同的开发场景。通过这些案例,你可以体验到 Kotlin 的简洁性和高效性。代码已优化,直接复制到 Kotlin 编译器中即可运行,适合初学者和进阶开发者上手练习!
五、避坑
- 空指针异常:Kotlin 强调空安全,避免不必要的空指针问题,但不要忘了用
?
或!!
明确空值。 when
条件未覆盖:记得提供默认分支else
,避免运行时出错。- 循环溢出:确保使用合适的数据范围,比如
1..100
。
六、未来
Kotlin 的未来无疑光明:不仅 Android 全面支持,连多平台编译也在逐步完善。同时,Kotlin Native 和 Kotlin Multiplatform 也带来跨平台开发的可能性,进一步释放开发者的创造力。
总结
Kotlin 就像一杯好茶,初尝觉得简单,细品才发现层次分明。这篇文章从基础开始,带你了解 Kotlin 的核心功能,希望能让你在开发中更加游刃有余。快去试试吧,用 Kotlin 写出自己喜欢的项目!
参考资料
- 《Kotlin in Action》
- JetBrains 官方文档
- CSDN 技术博客
欢迎关注GongZhongHao,码农的乌托邦,程序员的精神家园!