string - 将给定的字符串转换为 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]
我该如何纠正这个?
解决方案
您可以直接使用迭代字符串的字符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 中引入。
推荐阅读
- c# - .NET 4.5.1 中非强命名程序集的绑定重定向?
- java - 从文件中读取时如何对类泛型类型进行排序
- python - 用pygame播放mp3时没有声音
- javascript - Javascript比较运算符,===比==更有效吗?
- sas - SAS:如何将下几行中的值带到当前行,但不知道要看多远
- python - 从另一个文件中的文本中删除文件中定义的所有停用词(Python)
- unit-testing - 如何从子目录访问测试方法
- express - 在哪里处理从 HTTP 到 HTTP 的重定向?
- caching - TYPO3:文件元数据更改时清除页面缓存
- spring - 是否可以创建一个忽略 URI 某些部分的代理控制器