You need to enable JavaScript to run this app. Kotlin中字符调用toInt()返回50而非对应数字的问题求解
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin中字符调用toInt()返回50而非对应数字的问题求解

问题原因

你代码中拿到的sliced[0]是Char类型,Kotlin中Char类的toInt()方法返回值是该字符对应的ASCII编码值,字符'2'的ASCII码就是50,所以才会输出非预期结果,和你的转换逻辑无关,属于方法调用选择错误。

解决方法

两种常用修正方式:

  • 先将字符转为字符串再转整数:sliced[0].toString().toInt()
  • 使用Kotlin提供的字符转数字专用方法(Kotlin 1.5及以上版本支持):sliced[0].digitToInt()

修正后代码

fun main(args: Array<String>) {
  fun addTwoDigits(n: Int): Int {
    val sliced = n.toString().toList()
    val int1 = sliced[0].digitToInt()
    println(sliced[0]) //输出 "2"
    println(int1) // 输出 2
    return sliced[0].digitToInt() + sliced[1].digitToInt()
  }

  println(addTwoDigits(29)) // 输出11
}

通用实现(支持任意位数整数求和)

如果需要适配任意长度的整数各位求和,可以直接遍历转换后的字符序列累加:

fun sumDigits(n: Int): Int {
    return n.toString().sumOf { it.digitToInt() }
}
// 测试:sumDigits(1234) 返回1+2+3+4=10

内容的提问来源于stack exchange,提问作者yazmnh87

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 21:09:00