在编程中两种最常见的循环结构是 for 和 while. 使用 for 可以对一个值范围进行遍历, 并执行某个操作. 使用 while 可以反复执行某个操作, 直到满足某个条件为止.
for
使用关于值范围的新知识, 你可以创建一个 for 循环, 对数字 1 到 5 进行遍历, 并打印每个数字.
请将迭代器(iterator)和值范围放在小括号 () 之内, 并使用关键字 in. 将你想要执行的操作放在大括号 {} 之内:
fun main() {
//sampleStart
for (number in 1..5) {
// number 是迭代器(iterator), 1..5 是值范围
print(number)
}
// 输出结果为 12345
//sampleEnd
}
for 循环也可以对集合(Collection)进行遍历:
fun main() {
//sampleStart
val cakes = listOf("carrot", "cheese", "chocolate")
for (cake in cakes) {
println("Yummy, it's a $cake cake!")
}
// 输出结果为 Yummy, it's a carrot cake!
// 输出结果为 Yummy, it's a cheese cake!
// 输出结果为 Yummy, it's a chocolate cake!
//sampleEnd
}
while
while 有两种使用方式:
当一个条件表达式为 true 时, 执行一个代码段. (while)
先执行一个代码段, 然后再检查条件表达式. (do-while)
在第一种使用场景 (while) 中:
在小括号 () 中声明条件表达式, 当满足这个条件表达式时, 循环会继续.
在大括号 {} 中, 添加你想要执行的操作.
fun main() {
//sampleStart
var cakesEaten = 0
while (cakesEaten < 3) {
println("Eat a cake")
cakesEaten++
}
// 输出结果为 Eat a cake
// 输出结果为 Eat a cake
// 输出结果为 Eat a cake
//sampleEnd
}
在第二种使用场景 (do-while) 中:
在小括号 () 中声明条件表达式, 当满足这个条件表达式时, 循环会继续.
在大括号 {} 中, 添加你想要执行的操作, 并添加关键字 do.
fun main() {
//sampleStart
var cakesEaten = 0
var cakesBaked = 0
while (cakesEaten < 3) {
println("Eat a cake")
cakesEaten++
}
do {
println("Bake a cake")
cakesBaked++
} while (cakesBaked < cakesEaten)
// 输出结果为 Eat a cake
// 输出结果为 Eat a cake
// 输出结果为 Eat a cake
// 输出结果为 Bake a cake
// 输出结果为 Bake a cake
// 输出结果为 Bake a cake
//sampleEnd
}
使用 when 表达式, 更新下面的程序, 当你输入 GameBoy 按钮的名称时, 打印对应的动作.
按钮
动作
A
Yes
B
No
X
Menu
Y
Nothing
其他
There is no such button
fun main() {
val button = "A"
println(
// 在这里编写你的代码
)
}
fun main() {
val button = "A"
println(
when (button) {
"A" -> "Yes"
"B" -> "No"
"X" -> "Menu"
"Y" -> "Nothing"
else -> "There is no such button"
}
)
}
习题 2
你有一个程序, 计算批萨的片数, 直到有了 8 片, 组成一整个批萨. 请用两种方式重构这个程序:
使用 while 循环.
使用 do-while 循环.
fun main() {
var pizzaSlices = 0
// 要重构的代码从这里开始
pizzaSlices++
println("There's only $pizzaSlices slice/s of pizza :(")
pizzaSlices++
println("There's only $pizzaSlices slice/s of pizza :(")
pizzaSlices++
println("There's only $pizzaSlices slice/s of pizza :(")
pizzaSlices++
println("There's only $pizzaSlices slice/s of pizza :(")
pizzaSlices++
println("There's only $pizzaSlices slice/s of pizza :(")
pizzaSlices++
println("There's only $pizzaSlices slice/s of pizza :(")
pizzaSlices++
println("There's only $pizzaSlices slice/s of pizza :(")
pizzaSlices++
// 要重构的代码到这里结束
println("There are $pizzaSlices slices of pizza. Hooray! We have a whole pizza! :D")
}
fun main() {
var pizzaSlices = 0
while ( pizzaSlices < 7 ) {
pizzaSlices++
println("There's only $pizzaSlices slice/s of pizza :(")
}
pizzaSlices++
println("There are $pizzaSlices slices of pizza. Hooray! We have a whole pizza! :D")
}
fun main() {
var pizzaSlices = 0
pizzaSlices++
do {
println("There's only $pizzaSlices slice/s of pizza :(")
pizzaSlices++
} while ( pizzaSlices < 8 )
println("There are $pizzaSlices slices of pizza. Hooray! We have a whole pizza! :D")
}