【问题标题】:How to implement readLine()!!.toIntArray() on Kotlin?如何在 Kotlin 上实现 readLine()!!.toIntArray()?
【发布时间】:2017-12-15 06:52:42
【问题描述】:

我想实现一个函数或某种方式从控制台顺序存储数组。像这样的东西: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")
}

乙:

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")
}

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

或者是否有其他方法可以停止在控制台中读取数据?

总之,我想从block A转移到block 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")

【问题讨论】:

  • val numbers = readLine().split(" ").map { it.toFloat() }it.toInt()
  • 我把 readLine() 改成了 readLine()!!。太好了,当我有声望时,我会投票给你。
  • 很高兴为您提供帮助!

标签: arrays kotlin readline


【解决方案1】:

您不需要循环。可以通过map完成:

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

【讨论】:

  • 如果输入不是 1 2 5 6 而是 1256 并且我想要一个数组(1,2,3,5,6),我们该怎么办
【解决方案2】:

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

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

同样可以用数组做,但建议在 Kotlin 中使用列表

【讨论】:

  • 为什么是列表而不是数组?
  • 因为列表具有与数组几乎相同的性能,但 API 更好——它们实现了 Iterable,因此获得了很多有用的功能
猜你喜欢
  • 1970-01-01
  • 2017-10-02
  • 1970-01-01
  • 2017-11-02
  • 2020-02-21
  • 1970-01-01
  • 2017-10-24
  • 2011-11-01
  • 2016-07-08
相关资源
最近更新 更多