android studio监听器计算器
时间: 2023-10-08 08:14:17 浏览: 65
要在Android Studio中实现一个监听器计算器,你可以按照以下步骤进行操作:
1. 创建一个新的Android项目,并添加一个计算器界面。
2. 在计算器界面添加按钮以及相应的数字和运算符。
3. 在Activity中为每个按钮添加点击事件监听器。
4. 在监听器中,根据用户的点击来执行相应的计算操作,并更新计算结果显示的文本。
5. 为了避免错误输入,你可以添加一些额外的逻辑来处理异常情况,比如除数为零等。
下面是一个简单的示例代码,展示了如何实现一个监听器计算器:
```java
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private EditText resultEditText;
private Button btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9;
private Button btnAdd, btnSubtract, btnMultiply, btnDivide, btnEquals;
private boolean isOperatorClicked = false;
private double firstNumber = 0;
private String operator = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
resultEditText = findViewById(R.id.resultEditText);
btn0 = findViewById(R.id.btn0);
btn1 = findViewById(R.id.btn1);
btn2 = findViewById(R.id.btn2);
btn3 = findViewById(R.id.btn3);
btn4 = findViewById(R.id.btn4);
btn5 = findViewById(R.id.btn5);
btn6 = findViewById(R.id.btn6);
btn7 = findViewById(R.id.btn7);
btn8 = findViewById(R.id.btn8);
btn9 = findViewById(R.id.btn9);
btnAdd = findViewById(R.id.btnAdd);
btnSubtract = findViewById(R.id.btnSubtract);
btnMultiply = findViewById(R.id.btnMultiply);
btnDivide = findViewById(R.id.btnDivide);
btnEquals = findViewById(R.id.btnEquals);
// 设置点击事件监听器
btn0.setOnClickListener(this);
btn1.setOnClickListener(this);
btn2.setOnClickListener(this);
btn3.setOnClickListener(this);
btn4.setOnClickListener(this);
btn5.setOnClickListener(this);
btn6.setOnClickListener(this);
btn7.setOnClickListener(this);
btn8.setOnClickListener(this);
btn9.setOnClickListener(this);
btnAdd.setOnClickListener(this);
btnSubtract.setOnClickListener(this);
btnMultiply.setOnClickListener(this);
btnDivide.setOnClickListener(this);
btnEquals.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch (view.getId()) {
case R.id.btn0:
case R.id.btn1:
case R.id.btn2:
case R.id.btn3:
case R.id.btn4:
case R.id.btn5:
case R.id.btn6:
case R.id.btn7:
case R.id.btn8:
case R.id.btn9:
// 处理数字按钮的点击事件
handleNumberClick(view);
break;
case R.id.btnAdd:
case R.id.btnSubtract:
case R.id.btnMultiply:
case R.id.btnDivide:
// 处理运算符按钮的点击事件
handleOperatorClick(view);
break;
case R.id.btnEquals:
// 处理等号按钮的点击事件
calculateResult();
break;
}
}
private void handleNumberClick(View view) {
String number = ((Button) view).getText().toString();
String currentText = resultEditText.getText().toString();
if (currentText.equals("0") || isOperatorClicked) {
resultEditText.setText(number);
isOperatorClicked = false;
} else {
String newText = currentText + number;
resultEditText.setText(newText);
}
}
private void handleOperatorClick(View view) {
isOperatorClicked = true;
firstNumber = Double.parseDouble(resultEditText.getText().toString());
operator = ((Button) view).getText().toString();
}
private void calculateResult() {
double secondNumber = Double.parseDouble(resultEditText.getText().toString());
double result = 0;
switch (operator) {
case "+":
result = firstNumber + secondNumber;
break;
case "-":
result = firstNumber - secondNumber;
break;
case "*":
result = firstNumber * secondNumber;
break;
case "/":
result = firstNumber / secondNumber;
break;
}
resultEditText.setText(String.valueOf(result));
}
}
```
在这个示例中,我们为每个数字按钮和运算符按钮添加了点击事件监听器。在监听器中,我们根据用户的点击来更新显示的文本,并在等号按钮的点击事件中执行计算操作。