diff --git a/jisuanji/Calculator.java b/jisuanji/Calculator.java new file mode 100644 index 0000000..c422782 --- /dev/null +++ b/jisuanji/Calculator.java @@ -0,0 +1,31 @@ +package jisuanji; +public class Calculator { + // 加法 + public double add(double a, double b) { + return a + b; + } + + // 减法 + public double subtract(double a, double b) { + return a - b; + } + + // 乘法 + public double multiply(double a, double b) { + return a * b; + } + + // 除法 + public double divide(double a, double b) { + if (b != 0) { + return a / b; + } else { + throw new IllegalArgumentException("除数不能为零"); + } + } + + // 取余 + public double modulus(double a, double b) { + return a % b; + } +} diff --git a/jisuanji/CalculatorGUI.java b/jisuanji/CalculatorGUI.java new file mode 100644 index 0000000..6ec5a93 --- /dev/null +++ b/jisuanji/CalculatorGUI.java @@ -0,0 +1,92 @@ +package jisuanji; + +import javax.swing.*; +import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +public class CalculatorGUI extends JFrame { + private JTextField display; + private Calculator calculator = new Calculator(); + private double firstNumber = 0; + private double secondNumber = 0; + private String operation = ""; + private boolean isOperationClicked = false; + + public CalculatorGUI() { + setTitle("简易计算器"); + setSize(400, 600); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + setLocationRelativeTo(null); + + display = new JTextField(); + display.setEditable(false); + display.setFont(new Font("Arial", Font.PLAIN, 40)); + display.setHorizontalAlignment(JTextField.RIGHT); + display.setBorder(BorderFactory.createLineBorder(Color.BLACK)); + + JPanel panel = new JPanel(); + panel.setLayout(new GridLayout(4, 4, 10, 10)); + + String[] buttons = { + "7", "8", "9", "/", + "4", "5", "6", "*", + "1", "2", "3", "-", + "0", ".", "=", "+" + }; + + for (String buttonText : buttons) { + JButton button = new JButton(buttonText); + button.setFont(new Font("Arial", Font.PLAIN, 24)); + button.addActionListener(new ButtonClickListener()); + panel.add(button); + } + + add(display, BorderLayout.NORTH); + add(panel, BorderLayout.CENTER); + + setVisible(true); + } + + private class ButtonClickListener implements ActionListener { + @Override + public void actionPerformed(ActionEvent e) { + String command = e.getActionCommand(); + + if ("0123456789.".indexOf(command) >= 0) { + display.setText(display.getText() + command); + isOperationClicked = false; + } else if ("+*/-=".indexOf(command) >= 0) { + if (!isOperationClicked) { + firstNumber = Double.parseDouble(display.getText()); + operation = command; + isOperationClicked = true; + display.setText(""); + } else if (command.equals("=")) { + secondNumber = Double.parseDouble(display.getText()); + double result = 0; + switch (operation) { + case "+": + result = calculator.add(firstNumber, secondNumber); + break; + case "-": + result = calculator.subtract(firstNumber, secondNumber); + break; + case "*": + result = calculator.multiply(firstNumber, secondNumber); + break; + case "/": + result = calculator.divide(firstNumber, secondNumber); + break; + } + display.setText(String.valueOf(result)); + isOperationClicked = false; + } + } + } + } + + public static void main(String[] args) { + new CalculatorGUI(); + } +}