activity_main.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">
<EditText
android:id="@+id/editTextNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="输入数字"
android:inputType="numberDecimal"
android:textSize="24sp"
android:layout_margin="16dp"/>
<GridLayout
android:layout_below="@id/editTextNumber"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:rowCount="5"
android:columnCount="4">
<Button android:id="@+id/button1" android:text="1" />
<Button android:id="@+id/button2" android:text="2" />
<Button android:id="@+id/button3" android:text="3" />
<Button android:id="@+id/buttonPlus" android:text="+" />
<Button android:id="@+id/button4" android:text="4" />
<Button android:id="@+id/button5" android:text="5" />
<Button android:id="@+id/button6" android:text="6" />
<Button android:id="@+id/buttonMinus" android:text="-" />
<Button android:id="@+id/button7" android:text="7" />
<Button android:id="@+id/button8" android:text="8" />
<Button android:id="@+id/button9" android:text="9" />
<Button android:id="@+id/buttonMultiply" android:text="*" />
<Button android:id="@+id/buttonC" android:text="C" />
<Button android:id="@+id/button0" android:text="0" />
<Button android:id="@+id/buttonEquals" android:text="=" />
<Button android:id="@+id/buttonDivide" android:text="/" />
</GridLayout>
</RelativeLayout>
MainActivity代码
package com.example.myapplication;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import androidx.appcompat.app.AppCompatActivity;
import com.example.myapplication.R;
public class MainActivity extends AppCompatActivity {
private EditText editTextNumber;
private String operator = "";
private double firstValue = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editTextNumber = findViewById(R.id.editTextNumber);
int[] buttonIds = {
R.id.button1, R.id.button2, R.id.button3, R.id.buttonPlus,
R.id.button4, R.id.button5, R.id.button6, R.id.buttonMinus,
R.id.button7, R.id.button8, R.id.button9, R.id.buttonMultiply,
R.id.buttonC, R.id.button0, R.id.buttonEquals, R.id.buttonDivide
};
for (int id : buttonIds) {
Button button = findViewById(id);
button.setOnClickListener(new ButtonClickListener());
}
}
private class ButtonClickListener implements View.OnClickListener {
@Override
public void onClick(View v) {
Button button = (Button) v;
String buttonText = button.getText().toString();
switch (buttonText) {
case "C":
editTextNumber.setText("");
firstValue = 0;
operator = "";
break;
case "=":
double secondValue = Double.parseDouble(editTextNumber.getText().toString());
double result = calculate(firstValue, secondValue, operator);
editTextNumber.setText(String.valueOf(result));
operator = "";
break;
case "+":
case "-":
case "*":
case "/":
firstValue = Double.parseDouble(editTextNumber.getText().toString());
operator = buttonText;
editTextNumber.setText("");
break;
default:
editTextNumber.append(buttonText);
break;
}
}
}
private double calculate(double firstValue, double secondValue, String operator) {
switch (operator) {
case "+":
return firstValue + secondValue;
case "-":
return firstValue - secondValue;
case "*":
return firstValue * secondValue;
case "/":
return secondValue != 0 ? firstValue / secondValue : 0;
default:
return 0;
}
}
}