用android stdio 写一个完整的计算器
时间: 2023-10-05 20:08:18 浏览: 193
好的,以下是用 Android Studio 编写的简单计算器的完整代码。你可以将其复制粘贴到你的项目中并进行适当的修改。
布局文件:activity_main.xml
```xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="16dp"
android:gravity="center"
android:textSize="24sp"
android:textColor="@android:color/black"
android:text="0"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/result"
android:orientation="horizontal">
<Button
android:id="@+id/btn_clear"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="C"/>
<Button
android:id="@+id/btn_sign"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="+/-"/>
<Button
android:id="@+id/btn_percent"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="%"/>
<Button
android:id="@+id/btn_divide"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="/"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/result"
android:orientation="horizontal">
<Button
android:id="@+id/btn_7"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="7"/>
<Button
android:id="@+id/btn_8"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="8"/>
<Button
android:id="@+id/btn_9"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="9"/>
<Button
android:id="@+id/btn_multiply"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="*"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/result"
android:orientation="horizontal">
<Button
android:id="@+id/btn_4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="4"/>
<Button
android:id="@+id/btn_5"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="5"/>
<Button
android:id="@+id/btn_6"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="6"/>
<Button
android:id="@+id/btn_minus"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="-"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/result"
android:orientation="horizontal">
<Button
android:id="@+id/btn_1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="1"/>
<Button
android:id="@+id/btn_2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="2"/>
<Button
android:id="@+id/btn_3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="3"/>
<Button
android:id="@+id/btn_plus"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="+"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/result"
android:orientation="horizontal">
<Button
android:id="@+id/btn_0"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="2"
android:text="0"/>
<Button
android:id="@+id/btn_dot"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="."/>
<Button
android:id="@+id/btn_equals"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="="/>
</LinearLayout>
</RelativeLayout>
```
Java 文件:MainActivity.java
```java
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.text.DecimalFormat;
public class MainActivity extends AppCompatActivity {
private TextView result;
private String currentNumber = "";
private String operation = "";
private String leftOperand = "";
private DecimalFormat decimalFormat;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
result = findViewById(R.id.result);
decimalFormat = new DecimalFormat("#.##########");
}
public void onNumberClick(View view) {
Button button = (Button) view;
currentNumber += button.getText().toString();
updateResult(currentNumber);
}
public void onClearClick(View view) {
currentNumber = "";
leftOperand = "";
operation = "";
updateResult("0");
}
public void onSignClick(View view) {
if (!currentNumber.isEmpty()) {
double value = Double.parseDouble(currentNumber);
value = -value;
currentNumber = decimalFormat.format(value);
updateResult(currentNumber);
}
}
public void onPercentClick(View view) {
if (!currentNumber.isEmpty()) {
double value = Double.parseDouble(currentNumber);
value /= 100;
currentNumber = decimalFormat.format(value);
updateResult(currentNumber);
}
}
public void onDotClick(View view) {
if (!currentNumber.contains(".")) {
currentNumber += ".";
updateResult(currentNumber);
}
}
public void onOperatorClick(View view) {
Button button = (Button) view;
operation = button.getText().toString();
if (!currentNumber.isEmpty()) {
leftOperand = currentNumber;
currentNumber = "";
}
}
public void onEqualClick(View view) {
if (!currentNumber.isEmpty() && !leftOperand.isEmpty() && !operation.isEmpty()) {
double left = Double.parseDouble(leftOperand);
double right = Double.parseDouble(currentNumber);
double resultValue = 0;
switch (operation) {
case "+":
resultValue = left + right;
break;
case "-":
resultValue = left - right;
break;
case "*":
resultValue = left * right;
break;
case "/":
if (right != 0) {
resultValue = left / right;
}
break;
}
currentNumber = decimalFormat.format(resultValue);
updateResult(currentNumber);
leftOperand = "";
operation = "";
}
}
private void updateResult(String value) {
result.setText(value);
}
}
```
以上代码实现了一个简单的四则运算计算器,支持加减乘除、百分号、正负号、小数点和清除操作。
阅读全文