You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kotlin实现字符串反转程序输出内存地址而非预期结果如何修复

问题原因

  • 字符串不可变导致反转操作未生效:Kotlin中String是不可变类型,word.reversed()会返回新的反转后字符串,不会修改原数组中存储的元素,当前代码没有保存反转后的结果,操作完全无效。
  • 循环逻辑冗余错误:外层while循环完全多余,且判断条件nul <= count存在数组越界风险,只是当前没有修改数组内容才没有触发崩溃。
  • 数组toString()方法不符合预期:直接调用数组的toString()默认输出的是数组的类名加内存地址,就是你看到的[Ljava.lang.string;@2d112c3这类内容,不会将数组内的元素拼接为正常字符串。

修复方案

可以直接用Kotlin高阶函数简化逻辑,修改后的点击事件代码如下:

submitButton.setOnClickListener {
    // 先将输入的Editable类型转为String
    val inputStr = userString.text.toString()
    // 按空格拆分后对每个单词反转,再用空格拼接为最终结果
    val outputStr = inputStr.split(" ")
        .joinToString(" ") { word -> word.reversed() }
    changeText.text = outputStr
}

如果要保留你原本的数组遍历写法,也可以按如下方式修改:

submitButton.setOnClickListener {
    val getString = userString.text.toString()
    val typedArray: Array<String> = getString.split(" ").toTypedArray()
    // 遍历数组下标,替换每个位置的内容为反转后的字符串
    for (i in typedArray.indices) {
        typedArray[i] = typedArray[i].reversed()
    }
    // 用joinToString拼接数组内容,不要直接调用toString
    val reverseString = typedArray.joinToString(" ")
    changeText.text = reverseString
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 01:36:00