拆分出ReverseString类后Android程序点击按钮无输出无报错求排查
问题定位
你遇到的无输出问题完全出在ReverseString.kt的reverse方法的最终结果拼接逻辑,共有两处错误:
- Kotlin中
String是不可变类型,string.plus(i)不会修改原字符串变量,只会返回新的拼接后字符串,你没有接收这个返回值,所以最后返回的字符串永远是空值,导致UI展示为空。 - 你是按空格拆分的输入字符串为单词列表,拼接结果时没有把空格补回去,即便拼接逻辑生效也会导致所有单词连在一起,丢失原有的空格分隔。
修复方案
直接将reverse方法末尾的拼接代码替换为Kotlin原生的集合拼接方法即可,简洁且不会出错:
// 替换掉原来的拼接循环 return list.joinToString(" ")
如果要保留手动循环实现,可改为用可变的StringBuilder实现:
val stringBuilder = StringBuilder() list.forEachIndexed { index, word -> stringBuilder.append(word) if (index != list.lastIndex) { stringBuilder.append(" ") } } return stringBuilder.toString()
可选优化建议
MainActivity中输入框、输出文本框的findViewById操作可以和按钮一样统一放到onCreate中初始化,不需要每次点击按钮都重新查找控件,能减少不必要的性能开销。
内容的提问来源于stack exchange,提问作者j_md
相关产品推荐
相关产品推荐

