Kotlin中调用sum()函数计算字符串内数字总和报错的问题求助
Kotlin中调用sum()函数计算字符串内数字总和报错的问题求助
嗨,我来帮你分析下问题出在哪,以及怎么解决:
首先你当前的代码有个核心误区:你定义的numbers是字符串类型,而Kotlin里String自带的sum()函数,作用是计算字符串中每个字符的Unicode编码值的总和,完全不是你想要的“把逗号分隔的数字加起来”的功能。至于你提到的“sum is unused”报错,大概率是因为这个sum()的用法和你预期的完全不匹配,编译器或IDE识别出这不是合理的使用方式,才给出了提示。
要实现把逗号分隔的字符串数字求和,你需要先把字符串转换成数字集合,再调用正确的sum()方法,具体步骤很简单:
- 第一步:用
split(",")把字符串按逗号分割成单个数字字符串的列表 - 第二步:用
map { it.toInt() }把每个字符串元素转换成Int类型(如果是小数就用toDouble()) - 第三步:对转换后的数字列表调用
sum(),这时候的sum()才是计算数字总和的正确方法
修改后的完整可运行代码如下:
fun main() { val numbers = "1,2,3,4,5,6" val result = numbers.split(",") // 分割得到["1","2","3","4","5","6"] .map { it.toInt() } // 转换为Int列表[1,2,3,4,5,6] .sum() // 计算数字总和 println(result) // 输出结果21 }
另外给你两个小建议:
- 把
var numbers改成val,因为你不需要修改这个字符串的值,用val更符合Kotlin的编程习惯,也更安全 - 如果你的字符串里可能包含空格、非数字内容,可以加个容错处理,避免转换失败导致程序崩溃,比如用
mapNotNull { it.toIntOrNull() }来跳过无效内容,示例代码:fun main() { val numbers = "1,2, 3,abc,4,5,6" // 包含空格和非数字字符 val result = numbers.split(",") .map { it.trim() } // 先去掉每个元素的前后空格 .mapNotNull { it.toIntOrNull() } // 只保留能转换为Int的元素 .sum() println(result) // 依然输出21,自动跳过了无效内容 }
这样修改后,就能完美实现你想要的数字求和功能啦~
内容来源于stack exchange
相关产品推荐
相关产品推荐

