diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..f68d109
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,29 @@
+### IntelliJ IDEA ###
+out/
+!**/src/main/**/out/
+!**/src/test/**/out/
+
+### Eclipse ###
+.apt_generated
+.classpath
+.factorypath
+.project
+.settings
+.springBeans
+.sts4-cache
+bin/
+!**/src/main/**/bin/
+!**/src/test/**/bin/
+
+### NetBeans ###
+/nbproject/private/
+/nbbuild/
+/dist/
+/nbdist/
+/.nb-gradle/
+
+### VS Code ###
+.vscode/
+
+### Mac OS ###
+.DS_Store
\ No newline at end of file
diff --git a/.idea/.gitignore b/.idea/.gitignore
new file mode 100644
index 0000000..35410ca
--- /dev/null
+++ b/.idea/.gitignore
@@ -0,0 +1,8 @@
+# 默认忽略的文件
+/shelf/
+/workspace.xml
+# 基于编辑器的 HTTP 客户端请求
+/httpRequests/
+# Datasource local storage ignored files
+/dataSources/
+/dataSources.local.xml
diff --git a/.idea/compute.iml b/.idea/compute.iml
new file mode 100644
index 0000000..c90834f
--- /dev/null
+++ b/.idea/compute.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/dictionaries b/.idea/dictionaries
new file mode 100644
index 0000000..74fa4f7
--- /dev/null
+++ b/.idea/dictionaries
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..8ed5f34
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/modules.xml b/.idea/modules.xml
new file mode 100644
index 0000000..56c7c6c
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/vcs.xml b/.idea/vcs.xml
new file mode 100644
index 0000000..35eb1dd
--- /dev/null
+++ b/.idea/vcs.xml
@@ -0,0 +1,6 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/double_team.iml b/double_team.iml
new file mode 100644
index 0000000..c90834f
--- /dev/null
+++ b/double_team.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/src/Main.java b/src/Main.java
new file mode 100644
index 0000000..f2e280e
--- /dev/null
+++ b/src/Main.java
@@ -0,0 +1,23 @@
+/**
+ * ClassName:${NAME}
+ * Package:
+ * Description:
+ * Author Pjj
+ *
+ * @Create 2024/10/10 16:14
+ * @Version 1.0
+ *///TIP To Run code, press or
+// click the icon in the gutter.
+public class Main {
+ public static void main(String[] args) {
+ //TIP Press with your caret at the highlighted text
+ // to see how IntelliJ IDEA suggests fixing it.
+ System.out.printf("Hello and welcome!");
+
+ for (int i = 1; i <= 5; i++) {
+ //TIP Press to start debugging your code. We have set one breakpoint
+ // for you, but you can always add more by pressing .
+ System.out.println("i = " + i);
+ }
+ }
+}
\ No newline at end of file
diff --git a/src/compute/SimpleCalculator.java b/src/compute/SimpleCalculator.java
index b1e2456..9b52597 100644
--- a/src/compute/SimpleCalculator.java
+++ b/src/compute/SimpleCalculator.java
@@ -1,4 +1,5 @@
package compute;
+
import javax.swing.*;
import java.awt.*;
@@ -9,33 +10,44 @@ public class SimpleCalculator {
private double num1;
private double num2;
private String operator;
+ private double memory; // Memory for M+, M-, MR, and MC functionality
public SimpleCalculator() {
frame = new JFrame("简单计算器");
inputField = new JTextField();
inputField.setEditable(false);
+ inputField.setHorizontalAlignment(SwingConstants.RIGHT);
+ inputField.setFont(new Font("Arial", Font.BOLD, 24));
+ inputField.setPreferredSize(new Dimension(400, 50));
// 创建按钮
- JButton btn1 = new JButton("1");
- JButton btn2 = new JButton("2");
- JButton btn3 = new JButton("3");
- JButton btn4 = new JButton("4");
- JButton btn5 = new JButton("5");
- JButton btn6 = new JButton("6");
- JButton btn7 = new JButton("7");
- JButton btn8 = new JButton("8");
- JButton btn9 = new JButton("9");
- JButton btn0 = new JButton("0");
- JButton btnAdd = new JButton("+");
- JButton btnSubtract = new JButton("-");
- JButton btnMultiply = new JButton("*");
- JButton btnDivide = new JButton("/");
- JButton btnEqual = new JButton("=");
- JButton btnClear = new JButton("C");
+ JButton btn1 = createButton("1");
+ JButton btn2 = createButton("2");
+ JButton btn3 = createButton("3");
+ JButton btn4 = createButton("4");
+ JButton btn5 = createButton("5");
+ JButton btn6 = createButton("6");
+ JButton btn7 = createButton("7");
+ JButton btn8 = createButton("8");
+ JButton btn9 = createButton("9");
+ JButton btn0 = createButton("0");
+ JButton btnAdd = createButton("+");
+ JButton btnSubtract = createButton("-");
+ JButton btnMultiply = createButton("*");
+ JButton btnDivide = createButton("/");
+ JButton btnEqual = createButton("=");
+ JButton btnClear = createButton("C");
+ JButton btnDecimal = createButton(".");
+ JButton btnNegate = createButton("+/-");
+ JButton btnMPlus = createButton("M+");
+ JButton btnMMinus = createButton("M-");
+ JButton btnMR = createButton("MR");
+ JButton btnMC = createButton("MC");
// 设置布局
JPanel panel = new JPanel();
- panel.setLayout(new GridLayout(4, 4));
+ panel.setLayout(new GridLayout(6, 4, 5, 5)); // 网格布局,间距为5像素
+ panel.setBorder(BorderFactory.createEmptyBorder(10, 10, 10, 10));
panel.add(btn7);
panel.add(btn8);
panel.add(btn9);
@@ -49,9 +61,15 @@ public class SimpleCalculator {
panel.add(btn3);
panel.add(btnSubtract);
panel.add(btn0);
- panel.add(btnEqual);
- panel.add(btnClear);
+ panel.add(btnDecimal);
+ panel.add(btnNegate);
panel.add(btnAdd);
+ panel.add(btnClear);
+ panel.add(btnEqual);
+ panel.add(btnMPlus);
+ panel.add(btnMMinus);
+ panel.add(btnMR);
+ panel.add(btnMC);
// 添加事件监听器
btn1.addActionListener(e -> appendToInputField("1"));
@@ -64,6 +82,8 @@ public class SimpleCalculator {
btn8.addActionListener(e -> appendToInputField("8"));
btn9.addActionListener(e -> appendToInputField("9"));
btn0.addActionListener(e -> appendToInputField("0"));
+ btnDecimal.addActionListener(e -> appendDecimal());
+ btnNegate.addActionListener(e -> negateValue());
btnAdd.addActionListener(e -> setOperator("+"));
btnSubtract.addActionListener(e -> setOperator("-"));
@@ -72,19 +92,46 @@ public class SimpleCalculator {
btnEqual.addActionListener(e -> calculateResult());
btnClear.addActionListener(e -> clearInput());
+ btnMPlus.addActionListener(e -> memoryPlus());
+ btnMMinus.addActionListener(e -> memoryMinus());
+ btnMR.addActionListener(e -> memoryRecall());
+ btnMC.addActionListener(e -> memoryClear());
// 设置窗体
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
- frame.setSize(400, 400);
+ frame.setSize(400, 600); // 调整窗体大小
+ frame.setLayout(new BorderLayout(5, 5));
frame.add(inputField, BorderLayout.NORTH);
- frame.add(panel);
+ frame.add(panel, BorderLayout.CENTER);
frame.setVisible(true);
}
+ private JButton createButton(String text) {
+ JButton button = new JButton(text);
+ button.setFont(new Font("Arial", Font.PLAIN, 18));
+ button.setPreferredSize(new Dimension(80, 80));
+ button.setBackground(Color.LIGHT_GRAY);
+ button.setFocusPainted(false);
+ return button;
+ }
+
private void appendToInputField(String value) {
inputField.setText(inputField.getText() + value);
}
+ private void appendDecimal() {
+ if (!inputField.getText().contains(".")) {
+ inputField.setText(inputField.getText() + ".");
+ }
+ }
+
+ private void negateValue() {
+ if (!inputField.getText().isEmpty()) {
+ double value = Double.parseDouble(inputField.getText());
+ inputField.setText(String.valueOf(value * -1));
+ }
+ }
+
private void setOperator(String op) {
num1 = Double.parseDouble(inputField.getText());
operator = op;
@@ -92,33 +139,64 @@ public class SimpleCalculator {
}
private void calculateResult() {
- num2 = Double.parseDouble(inputField.getText());
- double result = 0;
-
- 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 {
- JOptionPane.showMessageDialog(frame, "错误:除数不能为零。");
- return;
- }
- break;
+ try {
+ num2 = Double.parseDouble(inputField.getText());
+ double result = 0;
+
+ 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 {
+ JOptionPane.showMessageDialog(frame, "错误:除数不能为零。");
+ return;
+ }
+ break;
+ }
+ inputField.setText(String.valueOf(result));
+ } catch (NumberFormatException e) {
+ JOptionPane.showMessageDialog(frame, "错误:无效的输入。");
}
- inputField.setText(String.valueOf(result));
}
private void clearInput() {
inputField.setText("");
+ num1 = 0;
+ num2 = 0;
+ operator = "";
+ }
+
+ private void memoryPlus() {
+ try {
+ memory += Double.parseDouble(inputField.getText());
+ } catch (NumberFormatException e) {
+ JOptionPane.showMessageDialog(frame, "错误:无效的输入。");
+ }
+ }
+
+ private void memoryMinus() {
+ try {
+ memory -= Double.parseDouble(inputField.getText());
+ } catch (NumberFormatException e) {
+ JOptionPane.showMessageDialog(frame, "错误:无效的输入。");
+ }
+ }
+
+ private void memoryRecall() {
+ inputField.setText(String.valueOf(memory));
+ }
+
+ private void memoryClear() {
+ memory = 0;
}
public static void main(String[] args) {