帮我用androidStudio写一个简单计算器页面和代码
时间: 2024-01-22 11:18:07 浏览: 25
好的,下面是一个简单的计算器页面和代码:
布局文件 `activity_main.xml`:
```xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:padding="16dp">
<!-- 显示结果的文本框 -->
<TextView
android:id="@+id/result_tv"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="16dp"
android:textSize="24sp"
android:textStyle="bold" />
<!-- 数字按钮 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="1"
android:layout_weight="1"/>
<Button
android:id="@+id/btn_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="2"
android:layout_weight="1"/>
<Button
android:id="@+id/btn_3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="3"
android:layout_weight="1"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="4"
android:layout_weight="1"/>
<Button
android:id="@+id/btn_5"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="5"
android:layout_weight="1"/>
<Button
android:id="@+id/btn_6"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="6"
android:layout_weight="1"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<Button
android:id="@+id/btn_7"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="7"
android:layout_weight="1"/>
<Button
android:id="@+id/btn_8"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="8"
android:layout_weight="1"/>
<Button
android:id="@+id/btn_9"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="9"
android:layout_weight="1"/>
</LinearLayout>
<!-- 运算符和清空按钮 -->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="16dp">
<Button
android:id="@+id/btn_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="+"
android:layout_weight="1"/>
<Button
android:id="@+id/btn_subtract"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="-"
android:layout_weight="1"/>
<Button
android:id="@+id/btn_multiply"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="*"
android:layout_weight="1"/>
<Button
android:id="@+id/btn_divide"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="/"
android:layout_weight="1"/>
<Button
android:id="@+id/btn_clear"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="C"
android:layout_weight="1"/>
</LinearLayout>
</LinearLayout>
```
Java 代码 `MainActivity.java`:
```java
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
// 数字按钮
private Button btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9;
// 运算符按钮
private Button btnAdd, btnSubtract, btnMultiply, btnDivide;
// 清空按钮
private Button btnClear;
// 显示结果的文本框
private TextView resultTextView;
// 记录计算结果
private double num1, num2;
private String operator;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 查找控件
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);
btnSubtract = findViewById(R.id.btn_subtract);
btnMultiply = findViewById(R.id.btn_multiply);
btnDivide = findViewById(R.id.btn_divide);
btnClear = findViewById(R.id.btn_clear);
resultTextView = findViewById(R.id.result_tv);
// 设置点击事件监听器
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);
btnClear.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
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:
// 点击数字按钮时,将数字拼接到当前输入的数字后面
String inputNum = ((Button) v).getText().toString();
String currentNum = resultTextView.getText().toString();
if (currentNum.equals("0")) {
resultTextView.setText(inputNum);
} else {
resultTextView.setText(currentNum + inputNum);
}
break;
case R.id.btn_add:
case R.id.btn_subtract:
case R.id.btn_multiply:
case R.id.btn_divide:
// 点击运算符按钮时,记录当前输入的数字和运算符,并清空文本框
num1 = Double.parseDouble(resultTextView.getText().toString());
operator = ((Button) v).getText().toString();
resultTextView.setText("0");
break;
case R.id.btn_clear:
// 点击清空按钮时,清空所有记录并重置文本框
num1 = 0;
num2 = 0;
operator = "";
resultTextView.setText("0");
break;
default:
break;
}
}
// 点击等号按钮时,计算结果并显示
public void onEqualsButtonClick(View view) {
num2 = Double.parseDouble(resultTextView.getText().toString());
double result = 0;
switch (operator) {
case "+":
result = num1 + num2;
break;
case "-":
result = num1 - num2;
break;
case "*":
result = num1 * num2;
break;
case "/":
if (num2 == 0) {
Toast.makeText(this, "除数不能为0", Toast.LENGTH_SHORT).show();
return;
} else {
result = num1 / num2;
}
break;
default:
break;
}
resultTextView.setText(String.valueOf(result));
}
}
```
以上代码实现了一个简单的计算器,通过点击数字按钮输入数字,点击运算符按钮记录当前输入的数字和运算符,点击等号按钮计算结果并显示。同时还实现了清空功能和除数为0的提示。