1

我最近在设计一个安卓计算器,显示名为 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. 以及如何考虑十进制输入?

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

4

5 回答 5

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");
        }
}); 
于 2012-09-01T12:54:13.797 回答
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");
    }
  }); 
于 2016-02-06T03:34:01.220 回答
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");
                }
            }
        });
于 2018-07-24T03:02:17.720 回答
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 元素。有效。

于 2019-02-28T08:31:40.787 回答
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 部分中使用了此代码**

于 2021-07-01T17:29:48.220 回答