Android写一个多功能计算器
时间: 2023-11-10 19:15:51 浏览: 36
好的,下面我给你提供一个简单的多功能计算器的实现方法:
1. 首先,在布局文件中创建一个EditText和多个Button,分别代表数字、运算符和计算结果。
2. 在Java代码中,为每个Button设置点击事件,通过点击事件获取相应的数字和运算符,并将它们添加到EditText中。
3. 创建一个计算方法,当用户点击“=”按钮时,调用该方法进行计算,并将结果显示在EditText中。
4. 在计算方法中,使用Java中的计算器类BigDecimal进行精确计算,根据用户选择的运算符进行相应的计算,并返回结果。
5. 将计算结果显示在EditText中,同时清除EditText中的内容,以便下一次计算。
下面是一个示例代码,仅供参考:
```
public class CalculatorActivity extends AppCompatActivity implements View.OnClickListener {
private EditText editText;
private Button btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btnAdd, btnSub, btnMul, btnDiv, btnEqual, btnClear;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
editText = findViewById(R.id.et_calculator);
btn0 = findViewById(R.id.btn_0);
btn1 = findViewById(R.id.btn_1);
btn2 = findViewById(R.id.btn_2);
btn3 = findViewById(R.id.btn_3);
btn4 = findViewById(R.id.btn_4);
btn5 = findViewById(R.id.btn_5);
btn6 = findViewById(R.id.btn_6);
btn7 = findViewById(R.id.btn_7);
btn8 = findViewById(R.id.btn_8);
btn9 = findViewById(R.id.btn_9);
btnAdd = findViewById(R.id.btn_add);
btnSub = findViewById(R.id.btn_sub);
btnMul = findViewById(R.id.btn_mul);
btnDiv = findViewById(R.id.btn_div);
btnEqual = findViewById(R.id.btn_equal);
btnClear = findViewById(R.id.btn_clear);
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);
btnSub.setOnClickListener(this);
btnMul.setOnClickListener(this);
btnDiv.setOnClickListener(this);
btnEqual.setOnClickListener(this);
btnClear.setOnClickListener(this);
}
@Override
public void onClick(View v) {
String str = editText.getText().toString();
switch (v.getId()) {
case R.id.btn_0:
case R.id.btn_1:
case R.id.btn_2:
case R.id.btn_3:
case R.id.btn_4:
case R.id.btn_5:
case R.id.btn_6:
case R.id.btn_7:
case R.id.btn_8:
case R.id.btn_9:
case R.id.btn_add:
case R.id.btn_sub:
case R.id.btn_mul:
case R.id.btn_div:
editText.setText(str + ((Button) v).getText());
break;
case R.id.btn_clear:
editText.setText("");
break;
case R.id.btn_equal:
getResult();
break;
}
}
// 计算结果
private void getResult() {
String exp = editText.getText().toString();
if (TextUtils.isEmpty(exp)) {
return;
}
if (!exp.contains("+") && !exp.contains("-") && !exp.contains("*") && !exp.contains("/")) {
return;
}
BigDecimal result = new BigDecimal("0");
if (exp.contains("+")) {
String[] str = exp.split("\\+");
if (str.length == 2) {
BigDecimal bd1 = new BigDecimal(str[0]);
BigDecimal bd2 = new BigDecimal(str[1]);
result = bd1.add(bd2);
}
} else if (exp.contains("-")) {
String[] str = exp.split("-");
if (str.length == 2) {
BigDecimal bd1 = new BigDecimal(str[0]);
BigDecimal bd2 = new BigDecimal(str[1]);
result = bd1.subtract(bd2);
}
} else if (exp.contains("*")) {
String[] str = exp.split("\\*");
if (str.length == 2) {
BigDecimal bd1 = new BigDecimal(str[0]);
BigDecimal bd2 = new BigDecimal(str[1]);
result = bd1.multiply(bd2);
}
} else if (exp.contains("/")) {
String[] str = exp.split("/");
if (str.length == 2) {
BigDecimal bd1 = new BigDecimal(str[0]);
BigDecimal bd2 = new BigDecimal(str[1]);
result = bd1.divide(bd2, 10, BigDecimal.ROUND_HALF_UP);
}
}
editText.setText(result.toString());
editText.setSelection(result.toString().length());
}
}
```
希望这个示例代码能够帮助你实现一个多功能计算器。