[英]Convert given string to list of integers in 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.6:
var numberList = readln().map { it.digitToInt() }
Kotlin >= 1.5 但 < 1.6:
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"
將字符轉換為字符串,因為Char.toInt()
將返回字符的 ASCII 代碼而不是數字表示的值。 String.toInt()
實際上解析以 10 為底的字符串表示的數字。
這種可能出乎意料的行為是在 Kotlin 1.5 中引入Char.digitToInt()
和Char.code
的原因。
嘗試使用split()
拆分輸入字符串是沒有意義的,因為 Kotlin 字符串已經支持toCharArray()
function ,它返回一個包含字符串中每個字符的數組。
val input = "12345"
val result = input.toCharArray().map(Character::getNumericValue)
println(result) // [1, 2, 3, 4, 5]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.