我最近设计了一个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个字符的输入,例如145它会发出14,当它是14时它会发出1,但是当进一步按下时,程序将被强制关闭。为什么呢?
如何考虑小数输入?
这个功能会有更好的代码吗?
答案 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 部分使用了这段代码 **