abr*_*bra 7 arrays string split kotlin
我需要将一个字符串拆分成一个整数数组.我试过这个:
val string = "1234567"
val numbers = string.split("").map { it.toInt() }
println(numbers.get(1))
Run Code Online (Sandbox Code Playgroud)
但抛出以下异常:
线程"main"中的异常java.lang.NumberFormatException:
对于输入字符串:java"java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)中的java.lang.Integer.parseInt(Integer.java:592) .lang.Integer.parseInt(Integer.java:615)at net.projecteuler.Problem_008Kt.main(Problem_008.kt:54)
如何将字符串"123456"转换为数组[1,2,3,4,5,6]?
你只是不需要split
,但你也不能toInt()
直接调用角色;这将为您提供整数形式的 Unicode 值。你需要Character.getNumericValue()
:
val string = "1234567"
val digits = string.map(Character::getNumericValue).toIntArray()
println(digits[1])
Run Code Online (Sandbox Code Playgroud)
它打印 2。
您的split("")
方法会导致[, 1, 2, 3, 4, 5, 6, 7, ]
,即第一个和最后一个元素无法格式化为数字.
实际上,CharSequence.map
就是你所需要的:
val numbers = string.map { it.toString().toInt() } //[1, 2, 3, 4, 5, 6, 7]
Run Code Online (Sandbox Code Playgroud)
使用此代码,将单个字符String
转换为相应的Int
表示形式.它导致一个List<Int>
可以转换为这样的数组:
string.map { it.toString().toInt() }.toIntArray()
Run Code Online (Sandbox Code Playgroud)