美文网首页
Kotlin基础知识三:区间(ranges)和 数列(progr

Kotlin基础知识三:区间(ranges)和 数列(progr

作者: 北雁南飞_8854 | 来源:发表于2020-05-04 17:51 被阅读0次

一、Ranges

1. '..'操作符
val oneToTen = 1..10

注意'..'操作符是闭区间,即start和end元素都是包含在内的。

fun fizzBuzz(i: Int) =
    when {
        i % 15 == 0 -> "FizzBuzz "
        i % 3 == 0 -> "Fizz "
        i % 5 == 0 -> "Buzz "
        else -> "$i "
    }

fun main(args: Array<String>) {
    for (i in 1..10) {
        print("$i ")
    }
}

输出:
1 2 3 4 5 6 7 8 9 10

2. 带步幅的遍历
  for(i in 100 downTo 1 step 2) {
        print("$i ")
    }

输出:
从100开始,输出100到1之间的所有偶数。

3. 遍历Maps
fun main(args: Array<String>) {
    //使用TreeMap保证插入后是有序的.
    val binaryResp = TreeMap<Char, String>()

    for( c in 'A'..'F') {
        //将Integer转化为二进制格式
        val binary = Integer.toBinaryString(c.toInt())
        //相当于Java的binaryReps.put(c, binary)
        binaryResp[c] = binary
    }

    for((letter, binary) in binaryResp) {
        println("$letter = $binary")
    }
}

输出:
A = 1000001
B = 1000010
C = 1000011
D = 1000100
E = 1000101
F = 1000110

4. 遍历列表
fun main(args: Array<String>) {
    val list = arrayListOf<String>("10", "11", "1001")

    //同时取出下标和元素
    for ((index, element) in list.withIndex()) {
        println("$index: $element")
    }

    //只取下标
    for(index in list.indices) {
        println("$index")
    }

    //只取元素
    for(element in list) {
        println("$element")
    }
}
5. 使用in判断是否在区间内
//判断一个字符是否是字符
fun isLetter(c:Char) = c in 'a'..'z' || c in 'A'..'Z'

//判断一个字符是否不是数字
fun isNotDigit(c:Char) :Boolean = c !in '0'..'9'

//相当于Java的“Java” <= “Kotlin” && “Kotlin” <= “Scala”
println("Kotlin" in "Java".."Scala")
在when分支中使用in
fun recognize(c:Char) = when(c) {
    in '0'..'9' -> "It's a digit"
    in 'a'..'z', in 'A'..'Z' -> "It's a letter"
    else -> "I don't know"
}

相关文章

网友评论

      本文标题:Kotlin基础知识三:区间(ranges)和 数列(progr

      本文链接:https://www.haomeiwen.com/subject/ubjyghtx.html