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
相关产品推荐
相关产品推荐

