生成一个Android的计算器的代码
时间: 2024-05-07 09:18:42 浏览: 10
以下是一个简单的Android计算器应用程序的代码示例,使用Java语言和Android Studio进行开发:
1. activity_main.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/tv_result"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:gravity="right"
android:padding="8dp"
android:text="0"
android:textSize="24sp" />
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="4"
android:rowCount="5">
<Button
android:id="@+id/btn_1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="1"
android:textSize="24sp" />
<Button
android:id="@+id/btn_2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="2"
android:textSize="24sp" />
<Button
android:id="@+id/btn_3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="3"
android:textSize="24sp" />
<Button
android:id="@+id/btn_add"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="+"
android:textSize="24sp" />
<Button
android:id="@+id/btn_4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="4"
android:textSize="24sp" />
<Button
android:id="@+id/btn_5"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="5"
android:textSize="24sp" />
<Button
android:id="@+id/btn_6"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="6"
android:textSize="24sp" />
<Button
android:id="@+id/btn_subtract"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="-"
android:textSize="24sp" />
<Button
android:id="@+id/btn_7"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="7"
android:textSize="24sp" />
<Button
android:id="@+id/btn_8"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="8"
android:textSize="24sp" />
<Button
android:id="@+id/btn_9"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="9"
android:textSize="24sp" />
<Button
android:id="@+id/btn_multiply"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="*"
android:textSize="24sp" />
<Button
android:id="@+id/btn_clear"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:layout_gravity="bottom"
android:text="C"
android:textSize="24sp" />
<Button
android:id="@+id/btn_0"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="0"
android:textSize="24sp" />
<Button
android:id="@+id/btn_equals"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="="
android:textSize="24sp" />
<Button
android:id="@+id/btn_divide"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="/"
android:textSize="24sp" />
</GridLayout>
</LinearLayout>
```
2. MainActivity.java(应用程序的主要代码逻辑)
```
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
public class MainActivity extends AppCompatActivity {
private TextView tvResult;
private String currentNumber;
private String operator;
private double result;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tvResult = findViewById(R.id.tv_result);
currentNumber = "0";
operator = "";
result = 0;
Button btn1 = findViewById(R.id.btn_1);
btn1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleNumberInput("1");
}
});
Button btn2 = findViewById(R.id.btn_2);
btn2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleNumberInput("2");
}
});
Button btn3 = findViewById(R.id.btn_3);
btn3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleNumberInput("3");
}
});
Button btn4 = findViewById(R.id.btn_4);
btn4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleNumberInput("4");
}
});
Button btn5 = findViewById(R.id.btn_5);
btn5.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleNumberInput("5");
}
});
Button btn6 = findViewById(R.id.btn_6);
btn6.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleNumberInput("6");
}
});
Button btn7 = findViewById(R.id.btn_7);
btn7.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleNumberInput("7");
}
});
Button btn8 = findViewById(R.id.btn_8);
btn8.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleNumberInput("8");
}
});
Button btn9 = findViewById(R.id.btn_9);
btn9.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleNumberInput("9");
}
});
Button btn0 = findViewById(R.id.btn_0);
btn0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleNumberInput("0");
}
});
Button btnAdd = findViewById(R.id.btn_add);
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleOperatorInput("+");
}
});
Button btnSubtract = findViewById(R.id.btn_subtract);
btnSubtract.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleOperatorInput("-");
}
});
Button btnMultiply = findViewById(R.id.btn_multiply);
btnMultiply.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleOperatorInput("*");
}
});
Button btnDivide = findViewById(R.id.btn_divide);
btnDivide.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
handleOperatorInput("/");
}
});
Button btnClear = findViewById(R.id.btn_clear);
btnClear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currentNumber = "0";
operator = "";
result = 0;
tvResult.setText("0");
}
});
Button btnEquals = findViewById(R.id.btn_equals);
btnEquals.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
calculateResult();
}
});
}
private void handleNumberInput(String number) {
if (currentNumber.equals("0")) {
currentNumber = number;
} else {
currentNumber += number;
}
tvResult.setText(currentNumber);
}
private void handleOperatorInput(String op) {
if (operator.isEmpty()) {
result = Double.parseDouble(currentNumber);
} else {
calculateResult();
}
operator = op;
currentNumber = "0";
}
private void calculateResult() {
if (operator.isEmpty()) {
return;
}
double currentNumberValue = Double.parseDouble(currentNumber);
switch (operator) {
case "+":
result += currentNumberValue;
break;
case "-":
result -= currentNumberValue;
break;
case "*":
result *= currentNumberValue;
break;
case "/":
if (currentNumberValue == 0) {
tvResult.setText("Error");
return;
}
result /= currentNumberValue;
break;
}
currentNumber = String.valueOf(result);
operator = "";
tvResult.setText(currentNumber);
}
}
```
这是一个简单的四则运算计算器应用程序,用户可以在应用程序中输入数字和运算符,并按下“=”按钮计算结果。