我正在尝试将一个大数字分成单独的数字。这就是我的做法:
fun main() {
var number = 8675309;
val string = number.toString()
println(string)
val numbers = string.map {
println(it)
it.toInt()
}
numbers.forEach { println(it) }
}
这是指向具有此代码的 Kotlin 游乐场的链接。
为此,我首先使用toString()
将数字转换为字符串。然后我打印此字符串以验证它是否与字符串相同。
然后,我映射此字符串,打印每个单独的字符以验证它是否正确,然后将该字符转换为带有toInt()
的整数。
我认为使用forEach()
来浏览新创建的数字数组并打印每个数字,但生成的数字与原始number
变量无关。
为什么这不起作用?
在string.map
内部,您正在迭代Char
值,而不是String
值。当您在Char
上调用toInt()
时,您将获得该字符的 ASCII 代码,这是您在程序末尾看到的打印代码。
解决此问题的一种简单方法是先将Char
值转换为String
值,然后再调用toInt()
以便结果将是您所期望的:
fun main() {
var number = 789456123;
val string = number.toString()
println(string)
val numbers = string.map {
println(it)
it.toString().toInt()
}
numbers.forEach { println(it) }
}