写一个Android计算器
时间: 2023-11-10 14:07:20 浏览: 75
好的,下面是一个简单的Android计算器的实现步骤:
1. 创建一个新的Android项目,并在布局文件中添加一个EditText组件来显示计算结果,一个TableLayout组件来放置计算器的按钮。
2. 在Activity的Java文件中,声明EditText和Button对象,并使用findViewById方法将它们与布局文件中的组件关联起来。
3. 为每个数字和操作符按钮添加点击事件监听器。在监听器中,将每个点击的按钮的文本添加到EditText中。
4. 添加一个“=”按钮的监听器,在该监听器中,解析EditText中的表达式并对其进行计算。可以使用Java的ScriptEngine类来实现计算逻辑。
5. 如果用户输入了无效的表达式或操作,可以在EditText中显示错误消息。
下面是一个简单的代码示例:
```
public class CalculatorActivity extends AppCompatActivity {
private EditText resultEditText;
private Button zeroButton, oneButton, twoButton, threeButton, fourButton, fiveButton, sixButton, sevenButton, eightButton, nineButton;
private Button clearButton, plusButton, minusButton, divideButton, multiplyButton, equalButton;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_calculator);
// Find views by id
resultEditText = findViewById(R.id.resultEditText);
zeroButton = findViewById(R.id.zeroButton);
oneButton = findViewById(R.id.oneButton);
twoButton = findViewById(R.id.twoButton);
threeButton = findViewById(R.id.threeButton);
fourButton = findViewById(R.id.fourButton);
fiveButton = findViewById(R.id.fiveButton);
sixButton = findViewById(R.id.sixButton);
sevenButton = findViewById(R.id.sevenButton);
eightButton = findViewById(R.id.eightButton);
nineButton = findViewById(R.id.nineButton);
clearButton = findViewById(R.id.clearButton);
plusButton = findViewById(R.id.plusButton);
minusButton = findViewById(R.id.minusButton);
divideButton = findViewById(R.id.divideButton);
multiplyButton = findViewById(R.id.multiplyButton);
equalButton = findViewById(R.id.equalButton);
// Set click listeners for number buttons
zeroButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resultEditText.append("0");
}
});
oneButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resultEditText.append("1");
}
});
twoButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resultEditText.append("2");
}
});
threeButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resultEditText.append("3");
}
});
fourButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resultEditText.append("4");
}
});
fiveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resultEditText.append("5");
}
});
sixButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resultEditText.append("6");
}
});
sevenButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resultEditText.append("7");
}
});
eightButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resultEditText.append("8");
}
});
nineButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resultEditText.append("9");
}
});
// Set click listeners for operator buttons
clearButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resultEditText.setText("");
}
});
plusButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resultEditText.append("+");
}
});
minusButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resultEditText.append("-");
}
});
divideButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resultEditText.append("/");
}
});
multiplyButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
resultEditText.append("*");
}
});
equalButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String expression = resultEditText.getText().toString();
if (expression.isEmpty()) {
return;
}
ScriptEngine engine = new ScriptEngineManager().getEngineByName("js");
try {
Object result = engine.eval(expression);
resultEditText.setText(result.toString());
} catch (ScriptException e) {
resultEditText.setText("Error");
}
}
});
}
}
```
阅读全文