用java编写安卓版一个计算器
时间: 2023-08-24 16:07:28 浏览: 33
好的,以下是一个简单的安卓版计算器的Java代码示例:
```
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
private Button btn0, btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9;
private Button btnAdd, btnSub, btnMul, btnDiv, btnClear, btnEqual;
private EditText etInput;
private boolean clearFlag; //判断是否清空
private String operator = ""; //运算符
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//获取控件对象
etInput = findViewById(R.id.et_input);
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);
btnClear = findViewById(R.id.btn_clear);
btnEqual = findViewById(R.id.btn_equal);
//设置按钮的点击事件监听器
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);
btnClear.setOnClickListener(this);
btnEqual.setOnClickListener(this);
}
@Override
public void onClick(View v) {
String str = etInput.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:
if (clearFlag) {
clearFlag = false;
str = "";
etInput.setText("");
}
etInput.setText(str + ((Button) v).getText());
break;
case R.id.btn_add:
case R.id.btn_sub:
case R.id.btn_mul:
case R.id.btn_div:
if (clearFlag) {
clearFlag = false;
str = "";
etInput.setText("");
}
operator = ((Button) v).getText().toString();
etInput.setText(str + operator);
break;
case R.id.btn_clear:
clearFlag = false;
str = "";
etInput.setText("");
break;
case R.id.btn_equal:
if (clearFlag) {
clearFlag = false;
return;
}
clearFlag = true;
if (operator.equals("")) {
return;
}
String[] arr = str.split("\\" + operator);
double result = 0;
switch (operator) {
case "+":
result = Double.parseDouble(arr[0]) + Double.parseDouble(arr[1]);
break;
case "-":
result = Double.parseDouble(arr[0]) - Double.parseDouble(arr[1]);
break;
case "*":
result = Double.parseDouble(arr[0]) * Double.parseDouble(arr[1]);
break;
case "/":
if (Double.parseDouble(arr[1]) == 0) {
etInput.setText("除数不能为0");
return;
}
result = Double.parseDouble(arr[0]) / Double.parseDouble(arr[1]);
break;
}
etInput.setText(result + "");
break;
}
}
}
```
此代码中实现了基本的加减乘除运算、清空和等于功能。同时,为了方便用户操作,还可以在布局文件中添加一些其他的控件,例如小数点、正负号等。