控制台Kotlin输入问题

时间:2018-04-23 14:53:40

标签: input kotlin console console-application

代码:

fun main(args: Array<String>) {
    println("I'm running")
    val str = readLine()
    var sum = 0
    val arr: IntArray
    if (str != null) {
        arr = str.split(" ").map(String::toInt).toIntArray()
        for (ch in arr)
            sum += ch
        println(sum)
    }
    println("not running anymore")
}

INPUT:

56 -44 -72 -79 -38 -80 4 -85 34 -56 -92 51 36 -12 59 -43 31 17 -76 -8 -52 28 45 -68 -96 -7 -70 20 

这就是我得到的:

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
    at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
    at java.lang.Integer.parseInt(Integer.java:592)
    at java.lang.Integer.parseInt(Integer.java:615)
    at KotKt.main(kot.kt:8)

1 个答案:

答案 0 :(得分:0)

您可能应该减少输入。

而不是

str.split(" ")

你应该使用

str.trim().split(" +")

String#trim()方法删除前导和尾随空白字符,这会导致您的错误。 +方法的RegEx中的附加String#split(regex)也会导致程序仍然正确读取输入,因此即使您使用多个空格作为数字之间的分隔符,也不会崩溃。字符串。

例如,即使此输入也可以使用:

val str = "   1  2 -54  4 811 33      44 4 321 87   "