下面的kotlin代码抛出异常。
"".split(";").map(String::toInt)
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)
我想不出原因,因为"&";。split("(将返回一个empyt列表,该列表不应调用map的回调函数。
所以,我在Kotlin REPL中做了一些实验,在emptyList上映射运行正常。
"".split(";")
res60: kotlin.collections.List<kotlin.String> = []
listOf<String>().map(String::toInt)
res61: kotlin.collections.List<kotlin.Int> = []
有人能给我线索吗?非常感谢。
split
返回的列表将始终至少有一个元素。如果分隔符没有出现在String中,则返回的列表中只有原始String。它永远不会返回空列表。
就像Tenfour04所说的,列表不是空的-我把它作为一个答案发布,这样我就可以进行格式化,但是:
println("Empty list: " + listOf<String>())
println("Single empty string: " + listOf(""))
println("Split empty string, plus an extra empty string: " + "".split(';').plus(""))
给你
Empty list: []
Single empty string: []
Split empty string, plus an extra empty string: [, ]
是的,这对输出没有帮助