java计算器依据输入信息计算结果并从文本框输出
时间: 2023-05-12 20:04:02 浏览: 147
你可以使用 Java 的 Swing 库来创建一个简单的计算器界面,然后使用 Java 的计算功能来计算输入的表达式。以下是一个简单的示例代码:
```
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class Calculator extends JFrame implements ActionListener {
private JTextField inputField;
private JButton[] numberButtons;
private JButton[] operatorButtons;
private JButton equalsButton;
private JButton clearButton;
public Calculator() {
super("Calculator");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
inputField = new JTextField();
add(inputField, BorderLayout.NORTH);
JPanel buttonPanel = new JPanel(new GridLayout(4, 4));
numberButtons = new JButton[10];
for (int i = 0; i < 10; i++) {
numberButtons[i] = new JButton("" + i);
numberButtons[i].addActionListener(this);
buttonPanel.add(numberButtons[i]);
}
operatorButtons = new JButton[4];
operatorButtons[0] = new JButton("+");
operatorButtons[1] = new JButton("-");
operatorButtons[2] = new JButton("*");
operatorButtons[3] = new JButton("/");
for (int i = 0; i < 4; i++) {
operatorButtons[i].addActionListener(this);
buttonPanel.add(operatorButtons[i]);
}
equalsButton = new JButton("=");
equalsButton.addActionListener(this);
buttonPanel.add(equalsButton);
clearButton = new JButton("C");
clearButton.addActionListener(this);
buttonPanel.add(clearButton);
add(buttonPanel, BorderLayout.CENTER);
pack();
setVisible(true);
}
public void actionPerformed(ActionEvent e) {
Object source = e.getSource();
if (source == equalsButton) {
String expression = inputField.getText();
try {
double result = evaluate(expression);
inputField.setText("" + result);
} catch (Exception ex) {
inputField.setText("Error");
}
} else if (source == clearButton) {
inputField.setText("");
} else {
String text = ((JButton)source).getText();
inputField.setText(inputField.getText() + text);
}
}
private double evaluate(String expression) throws Exception {
String[] tokens = expression.split(" ");
Stack<Double> stack = new Stack<Double>();
for (String token : tokens) {
if (isNumber(token)) {
stack.push(Double.parseDouble(token));
} else if (isOperator(token)) {
double operand2 = stack.pop();
double operand1 = stack.pop();
double result = applyOperator(token, operand1, operand2);
stack.push(result);
} else {
throw new Exception("Invalid expression");
}
}
return stack.pop();
}
private boolean isNumber(String token) {
try {
Double.parseDouble(token);
return true;
} catch (NumberFormatException e) {
return false;
}
}
private boolean isOperator(String token) {
return token.equals("+") || token.equals("-") || token.equals("*") || token.equals("/");
}
private double applyOperator(String operator, double operand1, double operand2) throws Exception {
if (operator.equals("+")) {
return operand1 + operand2;
} else if (operator.equals("-")) {
return operand1 - operand2;
} else if (operator.equals("*")) {
return operand1 * operand2;
} else if (operator.equals("/")) {
if (operand2 == 0) {
throw new Exception("Division by zero");
}
return operand1 / operand2;
} else {
throw new Exception("Invalid operator");
}
}
public static void main(String[] args) {
new Calculator();
}
}
```
这个计算器可以处理简单的四则运算,例如 "2 + 3 * 4",并且可以处理错误情况,例如除以零。你可以在文本框中输入表达式,然后按下 "=" 按钮来计算结果。