我正在Hackerrank的Kotlin做30天的守则,我被困在第7天。
如何在一行中读取多个整数?
如何将它添加到数组并反向显示?
我用Java解决了它,但缺少Kotlin所需的语法
输入:
4
1 4 3 2
我的代码:
fun main(args: Array<String>) {
val n = readLine()!!.toInt()
var arr = Array(n)
for(i in 0 until n)
{
arr[i] = readLine()!!.toInt() //Not Working? nor does readLine()!!.split(' ').toInt()
}
for(item in arr.size - 1 downTo 0)
{
print("${item} ")
}
}
答案 0 :(得分:3)
编辑:问题已从原始
更新问题是readLine()
将从stdin中读取整行,因此每次在for循环中调用readLine()
时,每次都会读取一条单独的行。
一种方法是读取该行,然后将每个值拆分并映射到Int。
readLine()?.let {
val numOfValues = it.toInt()
println(numOfValues)
readLine()?.let { line ->
line.split(" ").map {
it.toInt()
}.reversed().forEach {
println(it)
}
}
}
答案 1 :(得分:0)
如果要将它们存储在列表中,则可以使用此方法
var items = readLine()!!.trim().split("\\s+".toRegex()).map (String::toInt)
println(items)
您也可以将它们存储在不同的变量中
var (a,b) = readLine()!!.trim().split("\\s+".toRegex()).map (String::toInt)
println(a+b)
答案 2 :(得分:0)
对于初学者,您还可以使用以下代码对拆分并存储在数组中的项目进行排序
fun main(ags :Array<String>)
{
var item = readLine()!!.trim()
println(item[0])
}
答案 3 :(得分:0)
实际上,您可以参考Kotlin官方教程:https://kotlinlang.org/docs/tutorials/competitive-programming.html
如教程中所述:
要使在此类竞争性编程任务中的输入内容阅读更为简洁,可以具有以下辅助输入阅读功能列表:
private fun readLn() = readLine()!! // string line
private fun readInt() = readLn().toInt() // single int
private fun readStrings() = readLn().split(" ") // list of strings
private fun readInts() = readStrings().map { it.toInt() } // list of ints
对于您的情况,可以尝试如下使用:
fun main() {
val n = readInt()
val x = readInts()
for (j in x.reversed()) {
print(j); print(" ")
}
println()
}
private fun readLn() = readLine()!! // string line
private fun readInt() = readLn().toInt() // single int
private fun readStrings() = readLn().split(" ") // list of strings
private fun readInts() = readStrings().map { it.toInt() } // list of ints