用 JAVA 编写一个计算器,能实现四则混合运算并且带有括号功能,计算器有图形化界 面,能对异常进行处理,并且检验输入的合法性,对不合法的收入给出具体的提示信息。
时间: 2024-05-23 16:04:49 浏览: 115
JAVA编写计算器(支持带括号)
为了实现这个功能,需要使用 Java 的 GUI 库,比如 Swing 或 JavaFX。以下是一个使用 Swing 实现的简单计算器示例代码:
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calculator extends JFrame implements ActionListener {
private JTextField inputField;
private JLabel resultLabel;
private JButton[] buttons;
private String[] buttonLabels = {
"7", "8", "9", "+", "4", "5", "6", "-", "1", "2", "3", "*", "(", "0", ")", "/", "C", "=", "."
};
public Calculator() {
setTitle("Calculator");
setSize(400, 400);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel topPanel = new JPanel();
topPanel.setLayout(new GridLayout(2, 1));
inputField = new JTextField();
inputField.setHorizontalAlignment(JTextField.RIGHT);
topPanel.add(inputField);
resultLabel = new JLabel("0");
resultLabel.setHorizontalAlignment(JLabel.RIGHT);
topPanel.add(resultLabel);
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(5, 4));
buttons = new JButton[buttonLabels.length];
for (int i = 0; i < buttonLabels.length; i++) {
buttons[i] = new JButton(buttonLabels[i]);
buttons[i].addActionListener(this);
buttonPanel.add(buttons[i]);
}
add(topPanel, BorderLayout.NORTH);
add(buttonPanel, BorderLayout.CENTER);
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if (command.equals("C")) {
inputField.setText("");
resultLabel.setText("0");
} else if (command.equals("=")) {
try {
String expression = inputField.getText();
double result = evaluate(expression);
resultLabel.setText(Double.toString(result));
} catch (IllegalArgumentException ex) {
JOptionPane.showMessageDialog(this, ex.getMessage(), "Error", JOptionPane.ERROR_MESSAGE);
}
} else {
inputField.setText(inputField.getText() + command);
}
}
private double evaluate(String expression) {
// TODO: 实现表达式求值逻辑
}
public static void main(String[] args) {
new Calculator();
}
}
```
在这个实现中,我们使用了 Swing 库提供的各种组件,比如 JTextField、JLabel、JButton 和 JPanel 等。我们还实现了一个 actionPerformed 方法来处理按钮点击事件,其中包括清除输入、计算结果和输入数字等逻辑。在计算结果时,我们还加入了异常处理逻辑,如果输入表达式不合法,将会提示错误信息。最后,我们还需要实现一个 evaluate 方法来计算表达式的值,这部分逻辑可以使用栈和逆波兰表达式等算法来实现。
阅读全文