From d6043acd1e868c7d909e6d9b623272aacc953488 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=BD=AF=E5=B7=A5=E8=AF=BE?= <3562981539@qq.com> Date: Thu, 17 Oct 2024 15:07:37 +0800 Subject: [PATCH] first file --- src/ProjectStudy/SimpleCalculator.java | 55 --------------- src/main/java/SimpleCalculator.java | 97 ++++++++++++++++++++++++++ 2 files changed, 97 insertions(+), 55 deletions(-) delete mode 100644 src/ProjectStudy/SimpleCalculator.java create mode 100644 src/main/java/SimpleCalculator.java diff --git a/src/ProjectStudy/SimpleCalculator.java b/src/ProjectStudy/SimpleCalculator.java deleted file mode 100644 index fb1ad2d..0000000 --- a/src/ProjectStudy/SimpleCalculator.java +++ /dev/null @@ -1,55 +0,0 @@ -package ProjectStudy; - -import java.util.Scanner; - -public class SimpleCalculator { - - public static void main(String[] args) { - Scanner scanner = new Scanner(System.in); - - System.out.println("欢迎使用简单计算器!"); - System.out.println("请输入第一个操作数:"); - double num1 = scanner.nextDouble(); - - System.out.println("请输入操作符(+,-,*,/,%):"); - char operator = scanner.next().charAt(0); - - System.out.println("请输入第二个操作数:"); - double num2 = scanner.nextDouble(); - - double result; - - switch (operator) { - case '+': - result = num1 + num2; - break; - case '-': - result = num1 - num2; - break; - case '*': - result = num1 * num2; - break; - case '/': - if (num2 != 0) { - result = num1 / num2; - } else { - System.out.println("错误:除数不能为零!"); - return; - } - break; - case '%': - if (num2 != 0 && Math.abs(num2) == (int) Math.abs(num2)) { // 检查第二个操作数是整数 - result = (int) num1 % (int) num2; - } else { - System.out.println("错误:取余操作要求第二个操作数是整数!"); - return; - } - break; - default: - System.out.println("错误:无效的操作符!"); - return; - } - - System.out.println("结果是:" + result); - } -} diff --git a/src/main/java/SimpleCalculator.java b/src/main/java/SimpleCalculator.java new file mode 100644 index 0000000..cf33ee6 --- /dev/null +++ b/src/main/java/SimpleCalculator.java @@ -0,0 +1,97 @@ +package ProjectStudy; + + +import java.awt.BorderLayout; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JOptionPane; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.SwingUtilities; + +public class SimpleCalculator extends JFrame implements ActionListener { + private JTextField display; + private double num1 = 0.0; + private double num2 = 0.0; + private char operator = ' '; + private boolean start = true; + + public SimpleCalculator() { + this.setTitle("简单计算器"); + this.setSize(300, 400); + this.setDefaultCloseOperation(3); + this.setLayout(new BorderLayout()); + this.display = new JTextField(); + this.display.setHorizontalAlignment(4); + this.add(this.display, "North"); + JPanel buttonPanel = new JPanel(); + buttonPanel.setLayout(new GridLayout(4, 4)); + String[] buttonLabels = new String[]{"7", "8", "9", "/", "4", "5", "6", "*", "1", "2", "3", "-", "0", ".", "=", "+"}; + String[] var3 = buttonLabels; + int var4 = buttonLabels.length; + + for (int var5 = 0; var5 < var4; ++var5) { + String label = var3[var5]; + JButton button = new JButton(label); + button.addActionListener(this); + buttonPanel.add(button); + } + + this.add(buttonPanel, "Center"); + } + + public void actionPerformed(ActionEvent e) { + String command = e.getActionCommand(); + if (!command.matches("[0-9]") && !command.equals(".")) { + if (command.matches("[+\\-*/]")) { + this.num1 = Double.parseDouble(this.display.getText()); + this.operator = command.charAt(0); + this.start = true; + } else if (command.equals("=")) { + this.num2 = Double.parseDouble(this.display.getText()); + double result = this.calculate(this.num1, this.num2, this.operator); + this.display.setText(String.valueOf(result)); + this.start = true; + } + } else if (this.start) { + this.display.setText(command); + this.start = false; + } else { + this.display.setText(this.display.getText() + command); + } + + } + + private double calculate(double num1, double num2, char operator) { + switch (operator) { + case '*': + return num1 * num2; + case '+': + return num1 + num2; + case ',': + case '.': + default: + JOptionPane.showMessageDialog(this, "错误:无效的操作符!"); + return 0.0; + case '-': + return num1 - num2; + case '/': + if (num2 != 0.0) { + return num1 / num2; + } else { + JOptionPane.showMessageDialog(this, "错误:除数不能为零!"); + return 0.0; + } + } + } + + public static void main(String[] args) { + SwingUtilities.invokeLater(() -> { + SimpleCalculator calculator = new SimpleCalculator(); + calculator.setVisible(true); + }); + } +}