《Kotlin进化之路》之【第二章:揭开Kotlin的基础面纱】(六)
2.6 循环流程控制
循环控制流程的基本语法和其它语言也是类似的,有其它语言基础的朋友这一章节也可以选择略过,不过想学习的话也未尝不可,也许说不定有重新的一个认识,没有其它语言基础的朋友,那么这个章节,可要认真的去学习哦。
为什么要有循环流程控制呢,打个比方,让你在控制器里输出100个“李晓明是最帅的人”,你该如何操作呢?写100次print(“李晓明是最帅的人”),当然这样去写,也是可以的,如果换成打印1万次,1千万次呢,这样写会不会写死你?显然这样去操作,是不可取的,那么这时,循环流程控制就出来了,简短的代码就很好的诠释了我们的想法,循环流程控制的表达式有for,while, do...while,接下来我们会一一进行讲解。
2.6.1:for表达式
for循环的表达式如下:
for (item in collection) print(item)
代码演示:
fun main(args: Array<String>) {
for (a in 1..100){
println(a.toString()+"==李晓明是最帅的人")
}
}
打印结果(这里我省略了一些,毕竟太多了):
1==李晓明是最帅的人
2==李晓明是最帅的人
3==李晓明是最帅的人
4==李晓明是最帅的人
5==李晓明是最帅的人
6==李晓明是最帅的人
……
97==李晓明是最帅的人
98==李晓明是最帅的人
99==李晓明是最帅的人
100==李晓明是最帅的人
等之后我们学习了数组集合之后,那么就可以对数组或者集合来进行遍历,这里先暂且不说,等到那一章节的时候,再进行逐步分析。
以上呢,是运用for循环来打印输出的,那么用while循环该怎么打印呢
2.6.2:while表达式
while循环的表达式如下:
while( 布尔表达式 ) {
//循环内容
}
代码演示:
fun main(args: Array<String>) {
var a=1
while (a<=100){
println(a.toString()+"==李晓明是最帅的人")
a++
}
}
打印结果(同样,中间的我都省略了):
1==李晓明是最帅的人
2==李晓明是最帅的人
3==李晓明是最帅的人
4==李晓明是最帅的人
5==李晓明是最帅的人
6==李晓明是最帅的人
……
97==李晓明是最帅的人
98==李晓明是最帅的人
99==李晓明是最帅的人
100==李晓明是最帅的人
2.6.3:do…while表达式
do…while循环的表达式如下:
do {
//代码语句
}while(布尔表达式);
代码演示:
fun main(args: Array<String>) {
var a=1
do {
println(a.toString()+"==李晓明是最帅的人")
a++
}while (a<=100)
}
打印结果(同样,中间的我都省略了):
1==李晓明是最帅的人
2==李晓明是最帅的人
3==李晓明是最帅的人
4==李晓明是最帅的人
5==李晓明是最帅的人
6==李晓明是最帅的人
……
97==李晓明是最帅的人
98==李晓明是最帅的人
99==李晓明是最帅的人
100==李晓明是最帅的人
do…while 循环 对于 while 语句而言,如果不满足条件,则不能进入循环。
但有时候我们需要即使不满足条件,也至少执行一次。
do…while 循环和 while 循环相似,不同的是,do…while 循环至少会执行一次。
2.6.3:举例,使用各个循环打印九九乘法表
2.6.3.1:使用for循环打印
代码演示:
fun main(args: Array<String>) {
for (a in 1..9){
for (b in 1..a){
print(b.toString()+"*"+a.toString()+"="+(b*a)+" \t")
}
println()
}
}
打印结果:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
2.6.3.2:使用while循环打印
代码演示:
fun main(args: Array<String>) {
var a=1
var b=1
while (a<=9){
b=1
while (b<=a){
print(b.toString()+"*"+a.toString()+"="+(b*a)+" \t")
b++
}
a++
println()
}
}
打印结果:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
2.6.3.3:使用do…while循环打印
代码演示:
fun main(args: Array<String>) {
var a=1
var b=1
do {
b=1
while (b<=a){
print(b.toString()+"*"+a.toString()+"="+(b*a)+" \t")
b++
}
a++
println()
} while (a<=9)
}
打印结果:
1*1=1
1*2=2 2*2=4
1*3=3 2*3=6 3*3=9
1*4=4 2*4=8 3*4=12 4*4=16
1*5=5 2*5=10 3*5=15 4*5=20 5*5=25
1*6=6 2*6=12 3*6=18 4*6=24 5*6=30 6*6=36
1*7=7 2*7=14 3*7=21 4*7=28 5*7=35 6*7=42 7*7=49
1*8=8 2*8=16 3*8=24 4*8=32 5*8=40 6*8=48 7*8=56 8*8=64
1*9=9 2*9=18 3*9=27 4*9=36 5*9=45 6*9=54 7*9=63 8*9=72 9*9=81
2.6.4:举例,使用各个循环打印100以内的奇数
2.6.4.1:使用for循环打印
代码演示:
fun main(args: Array<String>) {
for (a in 1..100){
if (a%2!=0){ // 如果a%2==0 那么这个数就是偶数
println(a)
}
}
}
打印结果(由于太多,中间都省略了):
1
3
5
7
9
……
93
95
97
99
2.6.4.2:使用while循环打印
代码演示:
fun main(args: Array<String>) {
var a=1
while (a<=100){
if (a%2!=0){ // 如果a%2==0 那么这个数就是偶数
println(a)
}
a++
}
}
打印结果:
1
3
5
7
9
……
93
95
97
99
2.6.4.3:使用do…while循环打印
代码演示:
fun main(args: Array<String>) {
var a=1
do {
if (a%2!=0){ // 如果a%2==0 那么这个数就是偶数
println(a)
}
a++
}while (a<=100)
}
打印结果:
1
3
5
7
9
……
93
95
97
99
2.6.5:举例,使用各个循环打印100以内可以开方的数
2.6.5.1:使用for循环打印
代码演示:
fun main(args: Array<String>) {
for (a in 1..100){
var sq= sqrt(a.toFloat()) //kotlin中的数学函数,后续会讲到
if (((sq*sq)%sq)==0F){
println((sq*sq).toInt())
}
}
}
打印结果:
1
4
9
16
25
36
49
64
81
100
2.6.5.2:使用while循环打印
代码演示:
fun main(args: Array<String>) {
var a =0
while (a<=100){
var sq= sqrt(a.toFloat()) //kotlin中的数学函数,后续会讲到
if (((sq*sq)%sq)==0F){
println((sq*sq).toInt())
}
a++
}
}
打印结果:
1
4
9
16
25
36
49
64
81
100
2.6.5.3:使用do…while循环打印
代码演示:
fun main(args: Array<String>) {
var a =0
do {
var sq= sqrt(a.toFloat()) //kotlin中的数学函数,后续会讲到
if (((sq*sq)%sq)==0F){
println((sq*sq).toInt())
}
a++
}while (a<=100)
}
打印结果:
1
4
9
16
25
36
49
64
81
100