需要用Java编写一个计算器,它可以进行四则混合运算并带有括号功能。这个计算器需要有图形化界面,并且能够处理异常,检验输入的合法性,对于不合法的输入,需要给出具体的提示信息。
时间: 2024-04-30 14:19:13 浏览: 42
好的,你可以使用Java Swing库来实现图形化界面。以下是一个简单的计算器程序的示例代码,它可以进行四则混合运算并带有括号功能:
```java
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame implements ActionListener {
private JTextField display;
private boolean start;
private String lastCommand;
private double result;
public Calculator() {
setTitle("Calculator");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setSize(400, 300);
// Create the display field
display = new JTextField("0");
display.setEditable(false);
add(display, BorderLayout.NORTH);
// Create the buttons
JPanel buttonPanel = new JPanel();
buttonPanel.setLayout(new GridLayout(4, 4));
addButton(buttonPanel, "7");
addButton(buttonPanel, "8");
addButton(buttonPanel, "9");
addButton(buttonPanel, "/");
addButton(buttonPanel, "4");
addButton(buttonPanel, "5");
addButton(buttonPanel, "6");
addButton(buttonPanel, "*");
addButton(buttonPanel, "1");
addButton(buttonPanel, "2");
addButton(buttonPanel, "3");
addButton(buttonPanel, "-");
addButton(buttonPanel, "0");
addButton(buttonPanel, ".");
addButton(buttonPanel, "(");
addButton(buttonPanel, ")");
addButton(buttonPanel, "+");
add(buttonPanel, BorderLayout.CENTER);
// Add the equals button and the clear button
JPanel bottomPanel = new JPanel();
bottomPanel.setLayout(new FlowLayout());
JButton equalsButton = new JButton("=");
equalsButton.addActionListener(this);
bottomPanel.add(equalsButton);
JButton clearButton = new JButton("C");
clearButton.addActionListener(this);
bottomPanel.add(clearButton);
add(bottomPanel, BorderLayout.SOUTH);
setVisible(true);
}
private void addButton(Container c, String text) {
JButton button = new JButton(text);
button.addActionListener(this);
c.add(button);
}
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
if (start) {
if (command.equals("-")) {
display.setText(command);
start = false;
} else {
lastCommand = command;
}
} else {
if (command.equals("(")) {
display.setText(display.getText() + "(");
} else if (command.equals(")")) {
display.setText(display.getText() + ")");
} else if (command.equals("+") || command.equals("-") || command.equals("*") || command.equals("/")) {
calculate(Double.parseDouble(display.getText()));
lastCommand = command;
start = true;
} else if (command.equals("=")) {
calculate(Double.parseDouble(display.getText()));
lastCommand = "=";
start = true;
} else if (command.equals("C")) {
display.setText("0");
start = true;
} else {
display.setText(display.getText() + command);
}
}
}
private void calculate(double x) {
if (lastCommand.equals("+")) {
result += x;
} else if (lastCommand.equals("-")) {
result -= x;
} else if (lastCommand.equals("*")) {
result *= x;
} else if (lastCommand.equals("/")) {
result /= x;
} else if (lastCommand.equals("=")) {
result = x;
}
display.setText("" + result);
}
public static void main(String[] args) {
new Calculator();
}
}
```
这个程序使用了JTextField来显示计算结果,使用了JButton来创建按钮,并使用了ActionListener来处理按钮点击事件。其中,calculate方法负责计算运算结果,actionPerformed方法负责处理按钮点击事件。在实现计算器时,需要根据实际需求添加异常处理和输入合法性检验等功能。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)