大家好,我是android开发的新手,我目前正在尝试构建一个简单的计算器,但是当我单击c按钮时,它只会将最后一个字符变为“C”,这是我使用的代码行:
if (buttonText.equals("C")) {
dataToCalculate = dataToCalculate.substring(0,dataToCalculate.length()-1);
}
”
下面是完整的代码:
package com.example.icalculate;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import com.google.android.material.button.MaterialButton;
import org.w3c.dom.Text;
public class MainActivity extends AppCompatActivity implements View.OnClickListener{
private TextView textResult, textSolution;
private MaterialButton btnC,btnOpenBracket,btnClosedBracket,btnDivide;
private MaterialButton btn7,btn8,btn9,btnMultiply;
private MaterialButton btn4,btn5,btn6,btnPlus;
private MaterialButton btn1,btn2,btn3,btnMinus;
private MaterialButton btnAC,btn0,btnDot,btnEquals;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textResult = (TextView) findViewById(R.id.txtResult);
textSolution = (TextView) findViewById(R.id.txtSolution);
assignId(btnC, R.id.button_c);
assignId(btnOpenBracket, R.id.button_open_bracket);
assignId(btnClosedBracket, R.id.button_closed_bracket);
assignId(btnDivide, R.id.button_divide);
assignId(btn7, R.id.button_7);
assignId(btn8, R.id.button_8);
assignId(btn9, R.id.button_9);
assignId(btnMultiply, R.id.button_multiply);
assignId(btn4, R.id.button_4);
assignId(btn5, R.id.button_5);
assignId(btn6, R.id.button_6);
assignId(btnPlus, R.id.button_plus);
assignId(btn1, R.id.button_1);
assignId(btn2, R.id.button_2);
assignId(btn3, R.id.button_3);
assignId(btnMinus, R.id.button_minus);
assignId(btnAC, R.id.button_ac);
assignId(btn0, R.id.button_0);
assignId(btnDot, R.id.button_dot);
assignId(btnEquals, R.id.button_equals);
}
void assignId(MaterialButton btn, int id) {
btn = findViewById(id);
btn.setOnClickListener(this);
}
@Override
public void onClick(View v) {
MaterialButton button = (MaterialButton) v;
String buttonText = button.getText().toString();
String dataToCalculate = textSolution.getText().toString();
if (buttonText.equals("AC")) {
textSolution.setText("");
textResult.setText("0");
return;
}
if (buttonText.equals("C")) {
dataToCalculate = dataToCalculate.substring(0,dataToCalculate.length()-1);
}
if (buttonText.equals("=")) {
textSolution.setText(textResult.getText());
}else {
dataToCalculate = dataToCalculate+buttonText;
}
textSolution.setText(dataToCalculate);
}
}
1条答案
按热度按时间sq1bmfud1#
这里的情况不止一种。
首先,如果遇到 StringIndexOutOfBoundsException,则意味着 dataToCalculate 的长度为0。
因为,dataToCalculate.length()- 1,在长度为0时,将返回-1。
您可以通过首先检查长度来解决这个问题-我通常使用 String#isEmpty。
此外,您可以将代码简化为以下内容。