用Android写一个计算器
时间: 2023-11-15 13:06:26 浏览: 163
Android编写的计算器
5星 · 资源好评率100%
好的,以下是一个简单的 Android 计算器的实现步骤:
1. 创建一个新的 Android 项目,并在布局文件中添加数码键和操作符键的按钮。
2. 在 MainActivity 中定义一个 TextView 用于显示计算结果,并为每个按钮设置监听器,以便在用户按下按钮时执行相应的操作。
3. 创建一个名为 Calculator 的类,用于处理计算逻辑,并在 MainActivity 中创建一个实例。
4. 在 Calculator 类中定义一个 Stack 用于存储操作数,以及一个 String 用于存储当前操作符。
5. 在 Calculator 类中实现一个方法,用于将用户按下的数字键添加到操作数栈中。
6. 在 Calculator 类中实现一个方法,用于将用户按下的操作符键添加到操作符字符串中,并执行相应的计算操作。
7. 在 MainActivity 中的监听器中调用 Calculator 类中的方法,并将计算结果显示在 TextView 中。
以下是一个简单的示例代码:
MainActivity.java
```
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private TextView resultTextView;
private Calculator calculator;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
resultTextView = findViewById(R.id.resultTextView);
calculator = new Calculator();
Button button0 = findViewById(R.id.button0);
button0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculator.pushNumber(0);
updateResultTextView();
}
});
Button button1 = findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculator.pushNumber(1);
updateResultTextView();
}
});
// 添加其他数字键的监听器
Button buttonPlus = findViewById(R.id.buttonPlus);
buttonPlus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculator.pushOperator("+");
updateResultTextView();
}
});
Button buttonMinus = findViewById(R.id.buttonMinus);
buttonMinus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculator.pushOperator("-");
updateResultTextView();
}
});
// 添加其他操作符键的监听器
Button buttonEquals = findViewById(R.id.buttonEquals);
buttonEquals.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculator.calculate();
updateResultTextView();
}
});
Button buttonClear = findViewById(R.id.buttonClear);
buttonClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculator.clear();
updateResultTextView();
}
});
}
private void updateResultTextView() {
resultTextView.setText(calculator.getResult());
}
}
```
Calculator.java
```
import java.util.Stack;
public class Calculator {
private Stack<Integer> numberStack;
private String operatorString;
public Calculator() {
numberStack = new Stack<>();
operatorString = "";
}
public void pushNumber(int number) {
int currentNumber = 0;
if (!numberStack.isEmpty()) {
currentNumber = numberStack.pop();
}
currentNumber = currentNumber * 10 + number;
numberStack.push(currentNumber);
}
public void pushOperator(String operator) {
if (!operatorString.isEmpty()) {
calculate();
}
operatorString = operator;
if (numberStack.size() == 2) {
calculate();
}
}
public void calculate() {
if (numberStack.size() == 2 && !operatorString.isEmpty()) {
int secondNumber = numberStack.pop();
int firstNumber = numberStack.pop();
switch (operatorString) {
case "+":
numberStack.push(firstNumber + secondNumber);
break;
case "-":
numberStack.push(firstNumber - secondNumber);
break;
// 添加其他操作符的计算逻辑
}
operatorString = "";
}
}
public void clear() {
numberStack.clear();
operatorString = "";
}
public String getResult() {
if (numberStack.size() == 1 && operatorString.isEmpty()) {
return Integer.toString(numberStack.peek());
} else {
return "";
}
}
}
```
注意,这只是一个简单的示例代码,没有考虑很多实际应用中需要考虑的问题,例如输入错误处理、界面美化等。如果需要实现一个更完整的计算器应用,需要更多的工作。
阅读全文