安卓实现计算器
时间: 2023-06-21 20:15:08 浏览: 33
安卓实现计算器可以参考以下步骤:
1. 创建一个新的 Android 项目。
2. 在布局文件中添加一个 TextView,用于显示计算结果,以及多个 Button,用于输入数字和操作符。
3. 在 Activity 中获取 TextView 和 Button 的引用,并且为每个 Button 设置一个 OnClickListener。
4. 在 OnClickListener 中获取点击的 Button 的文本,并根据不同的文本进行不同的操作,例如:
- 如果是数字,则将数字添加到一个字符串变量中,并将其显示在 TextView 中。
- 如果是操作符,则将当前的数字和操作符添加到一个数组中,并清空字符串变量。
- 如果是等号,则将数组中的数字和操作符按照顺序进行计算,并将结果显示在 TextView 中。
5. 实现计算的逻辑,可以使用 Stack 数据结构来保存数字和操作符,并根据操作符的优先级进行计算。
以下是一个简单的实现示例:
MainActivity.java
```
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import java.util.Stack;
public class MainActivity extends AppCompatActivity {
private TextView resultTextView;
private String currentNumber = "";
private Stack<String> stack = new Stack<>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
resultTextView = findViewById(R.id.resultTextView);
Button button0 = findViewById(R.id.button0);
Button button1 = findViewById(R.id.button1);
Button button2 = findViewById(R.id.button2);
Button button3 = findViewById(R.id.button3);
Button button4 = findViewById(R.id.button4);
Button button5 = findViewById(R.id.button5);
Button button6 = findViewById(R.id.button6);
Button button7 = findViewById(R.id.button7);
Button button8 = findViewById(R.id.button8);
Button button9 = findViewById(R.id.button9);
Button buttonAdd = findViewById(R.id.buttonAdd);
Button buttonSubtract = findViewById(R.id.buttonSubtract);
Button buttonMultiply = findViewById(R.id.buttonMultiply);
Button buttonDivide = findViewById(R.id.buttonDivide);
Button buttonEqual = findViewById(R.id.buttonEqual);
button0.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currentNumber += "0";
resultTextView.setText(currentNumber);
}
});
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
currentNumber += "1";
resultTextView.setText(currentNumber);
}
});
// 省略其他数字按钮的 OnClickListener
buttonAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!currentNumber.isEmpty()) {
stack.push(currentNumber);
stack.push("+");
currentNumber = "";
}
}
});
buttonSubtract.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!currentNumber.isEmpty()) {
stack.push(currentNumber);
stack.push("-");
currentNumber = "";
}
}
});
// 省略其他操作符按钮的 OnClickListener
buttonEqual.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!currentNumber.isEmpty()) {
stack.push(currentNumber);
currentNumber = "";
}
if (stack.size() > 1) {
double result = Double.parseDouble(stack.pop());
while (!stack.isEmpty()) {
String operator = stack.pop();
double number = Double.parseDouble(stack.pop());
if (operator.equals("+")) {
result += number;
} else if (operator.equals("-")) {
result -= number;
} else if (operator.equals("*")) {
result *= number;
} else if (operator.equals("/")) {
result /= number;
}
}
resultTextView.setText(String.valueOf(result));
}
}
});
}
}
```
activity_main.xml
```
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/resultTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="32sp"
android:gravity="end"
android:padding="16dp"/>
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:columnCount="4"
android:rowCount="5">
<Button
android:id="@+id/button7"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="7"/>
<!-- 省略其他数字按钮 -->
<Button
android:id="@+id/buttonAdd"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="+"/>
<Button
android:id="@+id/buttonSubtract"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="-"/>
<!-- 省略其他操作符按钮 -->
<Button
android:id="@+id/buttonEqual"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_columnWeight="1"
android:layout_rowWeight="1"
android:text="="/>
</GridLayout>
</LinearLayout>
```