首页 > 解决方案 > 遇到空格时终止 readLine() 函数

问题描述

所以,我已经开始使用 Kotlin 来解决像 CodeChef 和 Codeforces 这样的网站上遇到的一些基本问题。

这个问题要求我们输入 2 个整数变量,比如xy,然后是y间隔的整数,比如m 1、 m 2、 m 3等等,直到m Y。但它的输入方式如下所示:

4 3
3 2 3

我的 Kotlin 输入代码是这样的:

fun main(args: Array<String>)
{
    val n = readLine()!!.toInt()
    val m = readLine()!!.toInt()
    var a:Int
    for(i in 1..m) {
         a= readLine()!!.toInt()
        //Some additional manipulation involving all three variables
     }
}

提交后,我收到以下消息:

java.lang.NumberFormatException: For input string: "4 3"
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:580)
    at java.lang.Integer.parseInt(Integer.java:615)
    at ProgramKt.main(program.kt:2)

因此,为了使我的代码能够正常工作,我必须以某种方式在 readLine() 方法遇到空格时立即终止它。或者还有其他方法吗?

标签: kotlin

解决方案


经过评论中的一些讨论,答案很简单。我们要做的是实现 split 函数,然后将每个元素映射为一个 Int。

fun main(args: Array<String>){
    val xandy = readLine()!!.split(" ").map{it.toInt()}
    val elems= readLine()!!.split(" ").map{it.toInt()}
    var b=1
    var ans=0
    for(i in 1..xandy[1]){
        //Manipulation stuff
    }
}

推荐阅读