Android:计算器在点后立即显示0

时间:2012-10-27 04:56:09

标签: android decimal calculator

我现在正在研究一个计算器,除小数位外,一切正常。

计算器实际上包含2个显示器,一个用于实际操作,称为fakedisplay,另一个称为Display,用于显示所需格式,即添加逗号。

按12345.678时,显示屏将显示fakedisplay并显示为12,345.678,但如果我按12345.009,则fakedisplay将正常工作为12345.009,但显示屏仍然保持为12,345直到9被按下,此时它将正常显示12,345.009

然而,奇怪的是,当用户按0时,没有响应,直到按9,009将立即追加。

我知道这是由解析代码引起的,但基于此,我该如何修改以下代码?我真的想不出任何解决方案......非常感谢您的所有建议!

one.setOnClickListener(new View.OnClickListener() {
    if (str.length()<15) {
        Fakedisplay.append("1");
    }

    DecimalFormat myFormatter1 = new DecimalFormat("###,###,###,###.#################"); 
    String str1=Fakedisplay.getText().toString(); 
    String stripped1 = Double.valueOf(str1).toString(); 
    stripped1 = myFormatter1.format(Double.valueOf(stripped1)); 

    if (stripped1.endsWith(".0")) 
        stripped1 = stripped1.substring(0, stripped1.length() - 2); 

    Display.setText(stripped1);
}

1 个答案:

答案 0 :(得分:0)

最简单的解决方案可能是在每次击键时剥离代码中的.0 ..

相反,当用户调用结果时,只删除尾随零(假设当然有小数点)。输入数字键{{1}等键}通过0,小数点9或符号更改键.(我称之为输入键)不会生成结果,因此不应删除尾随零。

但是,非输入键,例如在计算器上按+/-+-时,可以自由修改数字。

这将显示用户输入时输入的数字,但仍会在必要时删除尾随零。

你可以通过修改你的陈述来做到这一点(如上所述,只有当用户按下非入口密钥时才这样做):

=

第一个语句删除十进制数字末尾的所有尾随零(除非它是真正的整数)。第二个是照顾这种情况。

毫无疑问,如果我更多地考虑一下,我可以做一次替换,但这应该足以让它发挥作用。