首页 > 解决方案 > 将给定的字符串转换为 Kotlin 中的整数列表?

问题描述

我想将用户给定的字符串转换为整数列表。如果我写 12345 我想要 [1,2,3,4,5] 我正在尝试这段代码来实现它,但给出了一个例外。

fun main() {
    println("Enter Number")
    var numberList = readLine().toString().split("").map { it.toInt() }
    println(number)
}

这给出了 NumberFormatException: For input string: ""

如果我从中删除 .map 并输入 12345 numberList 变为 [, 1, 2, 3, 4, 5, ]

但是,如果我将分隔符更改为 " " -with SPACE- 并输入两个数字,因为 12 345 numberList 变为 [12, 345]

我该如何纠正这个?

标签: stringlistkotlin

解决方案


您可以直接使用迭代字符串的字符map

使用 Kotlin >= 1.5:

val input = readLine() ?: error("Missing input")
var numberList = input.map { it.digitToInt() }

Kotlin < 1.5:

val input = readLine() ?: error("Missing input")
var numberList = input.map { "$it".toInt() }

"$it"使用because将字符转换为字符串Char.toInt()会返回字符的 ASCII 码,而不是数字表示的值。String.toInt()实际上解析以 10 为底的字符串表示的数字。

这种可能出乎意料的行为是原因Char.digitToInt(),并Char.code在 Kotlin 1.5 中引入。


推荐阅读