如何在Kotlin上实现readLine()!!。toIntArray()?

时间:2017-12-15 06:52:43

标签: arrays kotlin readline

我想实现一个函数或某种方式从控制台顺序存储数组。这样的事情:readLine()!!.toIntArray()

  

为此使用循环是否方便?是否可以避免?

然后您可以使用数组索引访问它们。

fun main(args: Array<String>) {
    myFunction()
}

fun myFunction() {
    println(" . First number: ")
    val num1:Float = readLine()!!.toFloat()
    println(" . Second number: ")
    val num2:Float = readLine()!!.toFloat()
    println(" . Third number: ")
    val num3:Float = readLine()!!.toFloat()
    println(" . Fourth number: ")
    val num4:Float = readLine()!!.toFloat()

    val result:Float = (num1+num2) + (num3*num4)
    print("The result is: $result")
}

B:

fun myFunction() {
    println("Enter four numbers ...")
//    val numbers:IntArray = intArrayOf(45, 22, 10, 13)
    val numbers:IntArray = readLine()!!.toIntArray()   //HERE: toIntArray() isn't defined

    val result:Int = (numbers[0]+numbers[1]) + (numbers[2]*numbers[3])
    print("The result is: $result")
}

定义数组时,我必须指出我想从控制台读取的值的数量,即数组的大小。

  

还有另一种方法可以停止在控制台中读取数据吗?

简而言之,我想从A区转到B区的想法。

println("Enter four numbers ...")
val numbers = readLine()!!.split(" ").map { it.toInt() }

val result:Int = (numbers[0]+numbers[1]) + (numbers[2]*numbers[3])
print("The result is: $result")

2 个答案:

答案 0 :(得分:2)

您不需要循环。可以使用map

完成
val numbers = readLine()!!.split(" ").map { it.toInt() }

答案 1 :(得分:1)

如果您需要从示例中的单独行中读取数字:

val list = List(4) { readline()!!.toFloat() }

对阵列也可以这样做,但建议在Kotlin中使用列表