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

Kotlin开发Android计算器:移除字符串中的重复小数点或负号

解决Android计算器中移除小数点/负号的问题

嘿,我来帮你搞定这个计算器的符号处理问题!

你当前的代码逻辑思路是对的,但踩了Kotlin字符串的一个小坑——Kotlin里的String是不可变类型,replace()方法并不会修改原字符串,而是返回一个新的字符串对象。你之前的代码里只是调用了replace,但没把新生成的字符串赋值回buClickValue,所以看起来移除操作没生效。

修复小数点移除逻辑

把你的代码修改成这样,就能正确移除小数点了:

// 处理小数点按钮点击事件
if (!buClickValue.contains(".")) {
    buClickValue += "."
} else {
    // 关键:将replace返回的新字符串赋值回原变量
    buClickValue = buClickValue.replace(".", "")
}

拓展:负号的移除逻辑

针对你提到的负号处理,同样可以用类似的思路,甚至用更贴合场景的removePrefix()方法:

// 处理负号按钮点击事件
if (!buClickValue.startsWith("-")) {
    buClickValue = "-$buClickValue"
} else {
    // 移除开头的负号
    buClickValue = buClickValue.removePrefix("-")
}

额外优化:避免无效输入

为了让计算器更严谨,比如用户在空输入时点击小数点,应该显示0.而不是.,可以优化小数点的逻辑:

if (!buClickValue.contains(".")) {
    buClickValue = if (buClickValue.isEmpty()) "0." else "$buClickValue."
} else {
    buClickValue = buClickValue.replace(".", "")
}

这样修改后,用户再次点击小数点按钮时,就能正确移除已存在的小数点;负号按钮也能实现点击切换正负的效果啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 10:28:00