写一个带有记录功能的安卓计算器代码
时间: 2024-03-11 21:48:28 浏览: 18
以下是一个简单的带有记录功能的安卓计算器代码示例:
```java
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import java.util.ArrayList;
public class CalculatorActivity extends AppCompatActivity {
private TextView display;
private ArrayList<String> history;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
// 初始化 TextView 和记录历史记录的 ArrayList
display = findViewById(R.id.display);
history = new ArrayList<>();
// 设置数字按钮的点击事件
for (int i = 0; i < 10; i++) {
int resId = getResources().getIdentifier("button" + i, "id", getPackageName());
Button button = findViewById(resId);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String text = ((Button) view).getText().toString();
display.append(text);
}
});
}
// 设置操作符和小数点按钮的点击事件
Button dot = findViewById(R.id.button_dot);
dot.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String text = display.getText().toString();
if (!text.contains(".")) {
display.append(".");
}
}
});
Button add = findViewById(R.id.button_add);
add.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String text = display.getText().toString();
if (text.length() != 0 && !text.endsWith("+")
&& !text.endsWith("-") && !text.endsWith("*")
&& !text.endsWith("/")) {
display.append("+");
}
}
});
Button subtract = findViewById(R.id.button_subtract);
subtract.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String text = display.getText().toString();
if (text.length() != 0 && !text.endsWith("+")
&& !text.endsWith("-") && !text.endsWith("*")
&& !text.endsWith("/")) {
display.append("-");
}
}
});
Button multiply = findViewById(R.id.button_multiply);
multiply.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String text = display.getText().toString();
if (text.length() != 0 && !text.endsWith("+")
&& !text.endsWith("-") && !text.endsWith("*")
&& !text.endsWith("/")) {
display.append("*");
}
}
});
Button divide = findViewById(R.id.button_divide);
divide.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String text = display.getText().toString();
if (text.length() != 0 && !text.endsWith("+")
&& !text.endsWith("-") && !text.endsWith("*")
&& !text.endsWith("/")) {
display.append("/");
}
}
});
// 设置清除按钮的点击事件
Button clear = findViewById(R.id.button_clear);
clear.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
display.setText("");
}
});
// 设置等号按钮的点击事件
Button equals = findViewById(R.id.button_equals);
equals.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
String text = display.getText().toString();
if (text.length() != 0 && !text.endsWith("+")
&& !text.endsWith("-") && !text.endsWith("*")
&& !text.endsWith("/")) {
double result = evaluate(text);
display.setText(Double.toString(result));
history.add(text + " = " + result);
}
}
});
}
// 计算表达式的方法
private double evaluate(String expression) {
String[] tokens = expression.split("(?<=[\\d.])(?=[^\\d.])|(?<=[^\\d.])(?=[\\d.])");
double result = Double.parseDouble(tokens[0]);
for (int i = 1; i < tokens.length; i += 2) {
String operator = tokens[i];
double operand = Double.parseDouble(tokens[i + 1]);
switch (operator) {
case "+":
result += operand;
break;
case "-":
result -= operand;
break;
case "*":
result *= operand;
break;
case "/":
result /= operand;
break;
}
}
return result;
}
}
```
这个计算器可以进行加减乘除的计算,并且按下等于号会显示计算结果并记录历史记录。历史记录存储在一个 ArrayList 中,可以在需要的时候进行显示。