Android计算器:Backspace按钮

时间:2012-09-01 12:45:45

标签: android

我最近设计了一个Android计算器,显示器名为fakedisplay。 我现在为计算器添加一个退格按钮,代码如下:

    backspace.setOnClickListener(new View.OnClickListener() {        
        @Override 
        public void onClick(View v) { 

            clearCalcDisplay = DONT_CLEAR; 
            String str=Fakedisplay.getText().toString();
            if (str.length() >=1 ) { 
                str = str.substring(0, str.length() - 1);
                Fakedisplay.setText(str);
                };
            if (str.length() <1 ) {
                Fakedisplay.setText("0");
            }
    });   

我的问题是那个

  1. 我已经尝试了上面的内容,它适用于超过1个字符的输入,例如145它会发出14,当它是14时它会发出1,但是当进一步按下时,程序将被强制关闭。为什么呢?

  2. 如何考虑小数输入?

  3. 这个功能会有更好的代码吗?

5 个答案:

答案 0 :(得分:6)

将代码更改为

 backspace.setOnClickListener(new View.OnClickListener() {        
    @Override 
    public void onClick(View v) { 

        clearCalcDisplay = DONT_CLEAR; 
        String str=Fakedisplay.getText().toString();
        if (str.length() >1 ) { 
            str = str.substring(0, str.length() - 1);
            Fakedisplay.setText(str);
            }
       else if (str.length() <=1 ) {
            Fakedisplay.setText("0");
        }
}); 

答案 1 :(得分:0)

我结合了两个代码并获得了完美的代码

backspace.setOnClickListener(new             View.OnClickListener() {        
    @Override 
    public void onClick(View v) { 


        String str=Fakedisplay.getText().toString();
        if (str.length() >=1 ) { 
            str = str.substring(0, str.length() - 1);
            Fakedisplay.setText(str);
            } else if (str.length() <=1 ) {
        Fakedisplay.setText("0");
    }
  }); 

答案 2 :(得分:0)

///需要一个额外的结束括号。如果您不包括0,而只留下//“”“,那么您将有一个空格而不是零。

backspace.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {


                String str = Fakedisplay.getText().toString();
                if (str.length() > 1) {
                    str = str.substring(0, str.length() - 1);
                    Fakedisplay.setText(str);
                } else if (str.length() <= 1) {
                    Fakedisplay.setText("0");
                }
            }
        });

答案 3 :(得分:0)

我只是这样做:

void delete(EditText expr) {
        String str = expr.getText().toString();
        if(str.length() == 0)
            return;
        str = str.substring(0, str.length() - 1);
        expr.setText(str);
}

我使用了xml onclick元素。 奏效了。

答案 4 :(得分:0)

 String str=Fakedisplay.getText().toString();
    if (str.length() >1 ) { 
        str = str.substring(0, str.length() - 1);
        Fakedisplay.setText(str);
        }
   else if (str.length() <=1 ) {
        Fakedisplay.setText("0");
    }

**我在 buttonBackspace public void 部分使用了这段代码 **