写一个Java语言的科学计算器带界面的代码
时间: 2024-04-09 11:28:53 浏览: 120
Java 语言编写科学计算器界面的设计
以下是一个使用Java语言编写的科学计算器带界面的示例代码。这个示例使用了Swing库来创建图形用户界面(GUI):
```java
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class ScientificCalculator extends JFrame implements ActionListener {
private JTextField inputTextField;
private JButton[] buttons;
private String[] buttonLabels = {
"7", "8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "-", "0", ".", "=", "+",
"sin", "cos", "tan", "sqrt", "log", "exp", "(", ")"
};
public ScientificCalculator() {
setTitle("Scientific Calculator");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
inputTextField = new JTextField();
inputTextField.setEditable(false);
add(inputTextField, BorderLayout.NORTH);
JPanel buttonPanel = new JPanel(new GridLayout(6, 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(buttonPanel, BorderLayout.CENTER);
pack();
setVisible(true);
}
@Override
public void actionPerformed(ActionEvent e) {
String command = e.getActionCommand();
String currentText = inputTextField.getText();
if (command.equals("=")) {
try {
double result = evaluateExpression(currentText);
inputTextField.setText(Double.toString(result));
} catch (IllegalArgumentException ex) {
inputTextField.setText("Error");
}
} else if (command.equals("sin")) {
inputTextField.setText(currentText + "sin(");
} else if (command.equals("cos")) {
inputTextField.setText(currentText + "cos(");
} else if (command.equals("tan")) {
inputTextField.setText(currentText + "tan(");
} else if (command.equals("sqrt")) {
inputTextField.setText(currentText + "sqrt(");
} else if (command.equals("log")) {
inputTextField.setText(currentText + "log(");
} else if (command.equals("exp")) {
inputTextField.setText(currentText + "exp(");
} else {
inputTextField.setText(currentText + command);
}
}
private double evaluateExpression(String expression) {
// 实现表达式求值的逻辑
// 这里只是一个简单示例,可以使用现有的数学库或者自己实现一个表达式解析器和求值器
return 0.0;
}
public static void main(String[] args) {
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
new ScientificCalculator();
}
});
}
}
```
这个示例中,我们创建了一个继承自JFrame的ScientificCalculator类,并实现了ActionListener接口来处理按钮点击事件。在构造函数中,我们创建了一个文本输入框和一个按钮面板,并将按钮添加到面板中。每个按钮都有一个特定的命令,当按钮被点击时,我们根据命令执行相应的操作。
在actionPerformed方法中,我们根据不同的命令执行不同的操作。如果命令是"=",则调用evaluateExpression方法计算表达式的结果并显示在输入框中。其他命令如"sin"、"cos"等则在当前文本的末尾添加相应的函数名。
evaluateExpression方法是用来实现表达式求值的逻辑的地方。这里只是一个简单的示例,你可以根据需要使用现有的数学库或者自己实现一个表达式解析器和求值器。
你可以根据自己的需求进一步修改和扩展这个示例,例如添加更多的科学函数、优化求值逻辑等。
阅读全文