安卓(Android studio)编写一个计算器,可以连续加减乘除,可加小数点,不包含括号以及加减乘除优先算法。
时间: 2023-06-14 08:07:54 浏览: 312
好的,以下是一个简单的安卓计算器示例代码,可以实现连续加减乘除,可加小数点,不包含括号以及加减乘除优先算法。
首先,我们需要在布局文件 `activity_main.xml` 中添加一个显示器和一些按钮:
```xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<!-- 显示器 -->
<TextView
android:id="@+id/textView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:textSize="30sp"
android:padding="10dp"
android:textColor="#000000"
android:textStyle="bold"
android:gravity="right"/>
<!-- 按钮 -->
<GridLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@+id/textView"
android:rowCount="5"
android:columnCount="4">
<!-- 数字按钮 -->
<Button
android:id="@+id/button7"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="7"
android:layout_row="1"
android:layout_column="0"
android:layout_weight="1"/>
<Button
android:id="@+id/button8"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="8"
android:layout_row="1"
android:layout_column="1"
android:layout_weight="1"/>
<Button
android:id="@+id/button9"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="9"
android:layout_row="1"
android:layout_column="2"
android:layout_weight="1"/>
<Button
android:id="@+id/buttonDiv"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="/"
android:layout_row="1"
android:layout_column="3"
android:layout_weight="1"/>
<Button
android:id="@+id/button4"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="4"
android:layout_row="2"
android:layout_column="0"
android:layout_weight="1"/>
<Button
android:id="@+id/button5"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="5"
android:layout_row="2"
android:layout_column="1"
android:layout_weight="1"/>
<Button
android:id="@+id/button6"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="6"
android:layout_row="2"
android:layout_column="2"
android:layout_weight="1"/>
<Button
android:id="@+id/buttonMul"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="*"
android:layout_row="2"
android:layout_column="3"
android:layout_weight="1"/>
<Button
android:id="@+id/button1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="1"
android:layout_row="3"
android:layout_column="0"
android:layout_weight="1"/>
<Button
android:id="@+id/button2"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="2"
android:layout_row="3"
android:layout_column="1"
android:layout_weight="1"/>
<Button
android:id="@+id/button3"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="3"
android:layout_row="3"
android:layout_column="2"
android:layout_weight="1"/>
<Button
android:id="@+id/buttonSub"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="-"
android:layout_row="3"
android:layout_column="3"
android:layout_weight="1"/>
<Button
android:id="@+id/button0"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="0"
android:layout_row="4"
android:layout_column="0"
android:layout_weight="1"/>
<Button
android:id="@+id/buttonDot"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="."
android:layout_row="4"
android:layout_column="1"
android:layout_weight="1"/>
<Button
android:id="@+id/buttonEqual"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="="
android:layout_row="4"
android:layout_column="2"
android:layout_weight="1"/>
<Button
android:id="@+id/buttonAdd"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="+"
android:layout_row="4"
android:layout_column="3"
android:layout_weight="1"/>
</GridLayout>
</RelativeLayout>
```
接下来,在 `MainActivity.java` 中添加以下代码:
```java
public class MainActivity extends AppCompatActivity {
private TextView textView;
private String currentNumber = "";
private String lastOperator = "";
private double result = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 获取显示器
textView = findViewById(R.id.textView);
// 设置数字按钮的点击事件
findViewById(R.id.button0).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("0");
}
});
findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("1");
}
});
findViewById(R.id.button2).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("2");
}
});
findViewById(R.id.button3).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("3");
}
});
findViewById(R.id.button4).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("4");
}
});
findViewById(R.id.button5).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("5");
}
});
findViewById(R.id.button6).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("6");
}
});
findViewById(R.id.button7).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("7");
}
});
findViewById(R.id.button8).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("8");
}
});
findViewById(R.id.button9).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
appendNumber("9");
}
});
// 设置小数点按钮的点击事件
findViewById(R.id.buttonDot).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (!currentNumber.contains(".")) {
currentNumber += ".";
textView.setText(currentNumber);
}
}
});
// 设置加减乘除按钮的点击事件
findViewById(R.id.buttonAdd).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
performOperation("+");
}
});
findViewById(R.id.buttonSub).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
performOperation("-");
}
});
findViewById(R.id.buttonMul).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
performOperation("*");
}
});
findViewById(R.id.buttonDiv).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
performOperation("/");
}
});
// 设置等于按钮的点击事件
findViewById(R.id.buttonEqual).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
performEqual();
}
});
}
// 追加数字
private void appendNumber(String number) {
currentNumber += number;
textView.setText(currentNumber);
}
// 执行运算
private void performOperation(String operator) {
if (!currentNumber.equals("")) {
if (lastOperator.equals("")) {
result = Double.parseDouble(currentNumber);
} else {
result = perform(lastOperator, result, Double.parseDouble(currentNumber));
}
currentNumber = "";
lastOperator = operator;
}
}
// 执行等于
private void performEqual() {
if (!lastOperator.equals("") && !currentNumber.equals("")) {
result = perform(lastOperator, result, Double.parseDouble(currentNumber));
currentNumber = "";
lastOperator = "";
}
textView.setText("" + result);
}
// 执行运算
private double perform(String operator, double operand1, double operand2) {
switch (operator) {
case "+":
return operand1 + operand2;
case "-":
return operand1 - operand2;
case "*":
return operand1 * operand2;
case "/":
return operand1 / operand2;
default:
return 0;
}
}
}
```
这样就完成了一个简单的安卓计算器,可以实现连续加减乘除,可加小数点,不包含括号以及加减乘除优先算法。
阅读全文