首先,创建一个名为Calculator的Java类,该类包含用于执行计算的方法。该类可以包含addition、subtraction、multiplication和division等方法。这些方法将采用两个double类型的参数,并返回计算结果。
package studycode;
/**
* @author: yuuu
* Description: 用于执行计算的方法
*/
public class Calculator {
public static double addition(double num1, double num2) {
return num1 + num2;
}
public static double subtraction(double num1, double num2) {
return num1 - num2;
}
public static double multiplication(double num1, double num2) {
return num1 * num2;
}
public static double division(double num1, double num2) {
if (num2 == 0) {
throw new IllegalArgumentException("Cannot divide by zero");
}
return num1 / num2;
}
}
接下来,创建一个名为CalculatorUI的Java类,该类将负责显示计算器界面和接收用户输入。该类可以包含数字按钮、运算符按钮和等号按钮等组件,并在用户单击这些按钮时执行适当的操作。例如,当用户单击数字按钮时,CalculatorUI将向文本字段添加相应的数字。当用户单击运算符按钮时,CalculatorUI将调用Calculator类中的适当方法,并将结果显示在文本字段中。
package studycode;
/**
* @author: yuuu
* Description: 显示计算器界面和接收用户输入
*/
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class CalculatorUI extends JFrame implements ActionListener {
private JTextField displayField;
private double firstNumber;
private String operator;
public CalculatorUI() {
super("Calculator");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
JPanel buttonPanel = new JPanel(new GridLayout(5, 4));
JButton button0 = new JButton("0");
button0.addActionListener(this);
buttonPanel.add(button0);
JButton button1 = new JButton("1");
button1.addActionListener(this);
buttonPanel.add(button1);
JButton button2 = new JButton("2");
button2.addActionListener(this);
buttonPanel.add(button2);
JButton button3 = new JButton("3");
button3.addActionListener(this);
buttonPanel.add(button3);
JButton button4 = new JButton("4");
button4.addActionListener(this);
buttonPanel.add(button4);
JButton button5 = new JButton("5");
button5.addActionListener(this);
buttonPanel.add(button5);
JButton button6 = new JButton("6");
button6.addActionListener(this);
buttonPanel.add(button6);
JButton button7 = new JButton("7");
button7.addActionListener(this);
buttonPanel.add(button7);
JButton button8 = new JButton("8");
button8.addActionListener(this);
buttonPanel.add(button8);
JButton button9 = new JButton("9");
button9.addActionListener(this);
buttonPanel.add(button9);
JButton acButton = new JButton("AC");
acButton.addActionListener(this);
buttonPanel.add(acButton);
JButton addButton = new JButton("+");
addButton.addActionListener(this);
// 修复加法按钮无法显示的问题
addButton.setPreferredSize(new Dimension(50, 50));
buttonPanel.add(addButton);
JButton subtractButton = new JButton("-");
subtractButton.addActionListener(this);
buttonPanel.add(subtractButton);
JButton multiplyButton = new JButton("*");
multiplyButton.addActionListener(this);
buttonPanel.add(multiplyButton);
JButton divideButton = new JButton("/");
divideButton.addActionListener(this);
buttonPanel.add(divideButton);
JButton equalsButton = new JButton("=");
equalsButton.addActionListener(this);
buttonPanel.add(equalsButton);
displayField = new JTextField();
displayField.setEditable(false);
Container contentPane = getContentPane();
contentPane.setLayout(new BorderLayout());
contentPane.add(displayField, BorderLayout.NORTH);
contentPane.add(buttonPanel, BorderLayout.CENTER);
pack();
}
public void actionPerformed(ActionEvent event) {
String command = event.getActionCommand();
if (command.equals("+")) {
firstNumber = Double.parseDouble(displayField.getText());
operator = "+";
displayField.setText("");
} else if (command.equals("-")) {
firstNumber = Double.parseDouble(displayField.getText());
operator = "-";
displayField.setText("");
} else if (command.equals("*")) {
firstNumber = Double.parseDouble(displayField.getText());
operator = "*";
displayField.setText("");
} else if (command.equals("/")) {
firstNumber = Double.parseDouble(displayField.getText());
operator = "/";
displayField.setText("");
} else if (command.equals("=")) {
double secondNumber = Double.parseDouble(displayField.getText());
double result;
switch (operator) {
case "+":
result = Calculator.addition(firstNumber, secondNumber);
break;
case "-":
result = Calculator.subtraction(firstNumber, secondNumber);
break;
case "*":
result = Calculator.multiplication(firstNumber, secondNumber);
break;
case "/":
result = Calculator.division(firstNumber, secondNumber);
break;
default:
throw new IllegalArgumentException("Invalid operator: " + operator);
}
displayField.setText(Double.toString(result));
} else if (command.equals("AC")) {
displayField.setText("");
} else {
String currentText = displayField.getText();
String newText = currentText + command;
displayField.setText(newText);
}
}
public static void main(String[] args) {
CalculatorUI calculatorUI = new CalculatorUI();
calculatorUI.setVisible(true);
}
}
然后,我们就可以放心运行了!
计算一个7+8
完美!
欲买桂花同载酒。
终不似,少年游。