正向区间
区间通常是指一类数据的集合,例如,由符合0≤a≤1
的实数组成的一个集合便是一个区间,它包含了0~1
的所有实数。在Kotlin中,区间是通过rangeTo(other:Int)
函数构成的区间表达式,也可以用“..”
形式的操作符来表示。接下来我们通过两个案例来讲解一下整型类型的区间。整型类型区间的具体代码如下所示。
package com.itheima.chapter02.range
fun main(args: Array<String>) {
for (i in 1.rangeTo(4)) { // 与1 <= i <= 4 相同
print(i.toString() + "\t")
}
print("\n")
for (i in 1..4) { // 与1 <= i <= 4 相同
print(i.toString() + "\t")
}
}
运行结果:
1 2 3 4
1 2 3 4
上述代码中,通过rangeTo(other:Int)
和“..”
两种定义区间的形式定义了一个[1,4]的区间,并使用for循环输出区间[1,4]之间的值。从运行结果可以看出,两种方式都可以输出[1,4]之间的值。
在Kotlin中,还有一个函数until(to:Int)
,该函数与rangeTo()非常相似,只不过使用该函数输出的区间不包含结尾元素,并且该函数在使用时可以省略(),在until后面加上空格符,空格符后面加上范围值即可,具体代码如下所示。
package com.itheima.chapter02.range
fun main(args: Array<String>) {
for (i in 1 until 4) {
print(i.toString() + "\t")
}
}
运行结果:
1 2 3
上述代码中,1 until 4
表示[1,4)之间的数字,该区间包含数字1,不包含数字4,因此上述代码的运行结果为“1 2 3”。
逆向区间
正向区间讲解的区间,是一个按照正向顺序执行的区间,其实在Kotlin中,也可以按照逆向顺序输出区间中的内容,要想实现这样的操作需要使用downTo(to:Int)
函数,该函数可以省略()并且在downTo后加上空格符,空格符后加上范围值即可。接下来通过具体的代码进行演示,具体代码如下所示。
package com.itheima.chapter02.range
fun main(args: Array<String>) {
for (i in 4 downTo 1) {
print(i.toString() + "\t")
}
}
运行结果:
4 3 2 1
上述代码中,4 downTo 1
的意思是从4开始到1之间的数字,通过一个for循环将从4到1之间的数字打印出来,打印结果为“4 3 2 1”。
步长
前面讲解区间时,使用的都是默认的步长1,即每次递增或递减的差值为1,如果想要在循环中指定步长,则需要使用step(step:Int)
函数来实现,step中的()也可以省略,书写时在step后面加上空格符,空格符后面加上步长即可。接下来我们通过具体的代码进行演示,具体代码如下所示。
package com.itheima.chapter02.range
fun main(args: Array<String>) {
for (i in 1..4 step 2) { // i in [4 , 1]
print(i.toString() + "\t")
}
print("\n")
for (i in 4 downTo 1 step 2) { // i in [4 , 1]
print(i.toString() + "\t")
}
}
运行结果:
1 3
4 2
在上述代码中,分别使用正向区间和逆向区间输出[1,4]之间的值,并指定步长为2。当循环遍历正向区间i=1时,符合条件在区间范围内,增加步长2,此时i=3,也符合条件在区间范围内,再次增加步长,此时i=5,不符合条件在区间范围内,因此运行结果只输出1和3。逆向区间是一样的道理,以此类推即可。
为了让初学者能够掌握for循环中i的变化过程,接下来我们通过一个表格将i的值展示出来,如表所示。
区间方向 | 第1次 | 第2次 | 第3次 |
---|---|---|---|
正向区间的值 | 1 | 3 | 5 |
逆向区间的值 | 4 | 2 | 0 |
是否输出 | 是 | 是 | 否 |
酷客教程相关文章:
评论前必须登录!
注册