簡體   English   中英

將給定字符串轉換為 Kotlin 中的整數列表?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM