android 计算器混合运算
时间: 2023-10-18 19:20:14 浏览: 73
实现一个 Android 计算器可以进行混合运算的步骤如下:
1. 创建一个布局文件,包含数字按钮、运算符按钮、清除按钮、等于按钮和显示屏等控件。
2. 在 Activity 中获取这些控件的引用,并为数字按钮和运算符按钮添加点击事件。
3. 在点击数字按钮时,将数字添加到一个字符串中,用于后续的计算。在点击运算符按钮时,将当前的数字添加到一个 List 中,并将当前运算符添加到另一个 List 中。
4. 在点击等于按钮时,遍历运算符 List,根据优先级进行计算,并将结果添加到数字 List 中,最终得到计算结果。
5. 将计算结果显示在显示屏上,并清空数字字符串和 List。
6. 在点击清除按钮时,清空数字字符串和 List,并将显示屏上的内容清空。
具体实现代码可以参考以下示例:
```java
public class CalculatorActivity extends AppCompatActivity implements View.OnClickListener {
private TextView mDisplay;
private String mNumber = "";
private ArrayList<Double> mNumbersList = new ArrayList<>();
private ArrayList<String> mOperatorsList = new ArrayList<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
mDisplay = findViewById(R.id.display);
findViewById(R.id.button_0).setOnClickListener(this);
findViewById(R.id.button_1).setOnClickListener(this);
findViewById(R.id.button_2).setOnClickListener(this);
findViewById(R.id.button_3).setOnClickListener(this);
findViewById(R.id.button_4).setOnClickListener(this);
findViewById(R.id.button_5).setOnClickListener(this);
findViewById(R.id.button_6).setOnClickListener(this);
findViewById(R.id.button_7).setOnClickListener(this);
findViewById(R.id.button_8).setOnClickListener(this);
findViewById(R.id.button_9).setOnClickListener(this);
findViewById(R.id.button_plus).setOnClickListener(this);
findViewById(R.id.button_minus).setOnClickListener(this);
findViewById(R.id.button_multiply).setOnClickListener(this);
findViewById(R.id.button_divide).setOnClickListener(this);
findViewById(R.id.button_clear).setOnClickListener(this);
findViewById(R.id.button_equal).setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.button_0:
case R.id.button_1:
case R.id.button_2:
case R.id.button_3:
case R.id.button_4:
case R.id.button_5:
case R.id.button_6:
case R.id.button_7:
case R.id.button_8:
case R.id.button_9:
Button button = (Button) v;
mNumber += button.getText().toString();
mDisplay.setText(mNumber);
break;
case R.id.button_plus:
case R.id.button_minus:
case R.id.button_multiply:
case R.id.button_divide:
Button operatorButton = (Button) v;
mNumbersList.add(Double.parseDouble(mNumber));
mOperatorsList.add(operatorButton.getText().toString());
mNumber = "";
break;
case R.id.button_equal:
if (!mNumber.equals("")) {
mNumbersList.add(Double.parseDouble(mNumber));
}
double result = mNumbersList.get(0);
for (int i = 0; i < mOperatorsList.size(); i++) {
String operator = mOperatorsList.get(i);
double number = mNumbersList.get(i + 1);
switch (operator) {
case "+":
result += number;
break;
case "-":
result -= number;
break;
case "*":
result *= number;
break;
case "/":
result /= number;
break;
}
}
mDisplay.setText(String.valueOf(result));
mNumber = "";
mNumbersList.clear();
mOperatorsList.clear();
break;
case R.id.button_clear:
mNumber = "";
mNumbersList.clear();
mOperatorsList.clear();
mDisplay.setText("");
break;
}
}
}
```
阅读全文