From fbda941f3ed765f4f88af10406478c0676fccfdc Mon Sep 17 00:00:00 2001
From: xuetao <531074036@qq.com>
Date: Mon, 9 May 2022 12:42:52 +0800
Subject: [PATCH 01/21] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=B5=8B=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/java2022spring/Test.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/java2022spring/Test.java b/src/java2022spring/Test.java
index 24deb29..98e0097 100644
--- a/src/java2022spring/Test.java
+++ b/src/java2022spring/Test.java
@@ -2,6 +2,6 @@ package java2022spring;
public class Test {
public static void main(String[] args) {
- System.out.println("Hello world!");
+ System.out.println("Hello world!2");
}
}
--
Gitee
From 929c0a9203d3e3aecbdd68176e8f02f0670a5a9b Mon Sep 17 00:00:00 2001
From: xuetao <531074036@qq.com>
Date: Mon, 9 May 2022 12:56:14 +0800
Subject: [PATCH 02/21] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=B5=8B=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/java2022spring/Test.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/java2022spring/Test.java b/src/java2022spring/Test.java
index 98e0097..c86160a 100644
--- a/src/java2022spring/Test.java
+++ b/src/java2022spring/Test.java
@@ -2,6 +2,6 @@ package java2022spring;
public class Test {
public static void main(String[] args) {
- System.out.println("Hello world!2");
+ System.out.println("Hello world!3");
}
}
--
Gitee
From cc6d01b746173aed7c9b05a71b77fa2ec0ac5201 Mon Sep 17 00:00:00 2001
From: xuetao <531074036@qq.com>
Date: Mon, 9 May 2022 13:02:39 +0800
Subject: [PATCH 03/21] =?UTF-8?q?=E6=8F=90=E4=BA=A4=E6=B5=8B=E8=AF=95?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/java2022spring/Test.java | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/java2022spring/Test.java b/src/java2022spring/Test.java
index c86160a..63a6bd1 100644
--- a/src/java2022spring/Test.java
+++ b/src/java2022spring/Test.java
@@ -2,6 +2,6 @@ package java2022spring;
public class Test {
public static void main(String[] args) {
- System.out.println("Hello world!3");
+ System.out.println("Hello world!测试免密码提交");
}
}
--
Gitee
From 65a64b45e35ca195aefecbd8c9895f4777bea1f6 Mon Sep 17 00:00:00 2001
From: xuetao <531074036@qq.com>
Date: Wed, 11 May 2022 23:03:21 +0800
Subject: [PATCH 04/21] =?UTF-8?q?=E5=BC=80=E5=A7=8B=E9=A1=B9=E7=9B=AE?=
=?UTF-8?q?=EF=BC=8C=E5=85=88=E7=AE=80=E5=8D=95=E5=86=99=E4=BA=86=E4=B8=80?=
=?UTF-8?q?=E4=B8=AA=E8=AE=A1=E7=AE=97=E5=99=A8=E7=9A=84=E5=9F=BA=E7=A1=80?=
=?UTF-8?q?=E6=A1=86=E6=9E=B6=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.classpath | 10 --
.gitignore | 1 -
.idea/.gitignore | 8 ++
.idea/misc.xml | 6 +
.idea/modules.xml | 8 ++
.idea/uiDesigner.xml | 124 ++++++++++++++++++
.idea/vcs.xml | 6 +
.project | 17 ---
.settings/org.eclipse.jdt.core.prefs | 14 --
java2022spring.iml | 11 ++
readme.md | 2 -
src/java2022spring/Calculator.java | 20 +++
.../{Test.java => MainApp.java} | 15 ++-
13 files changed, 191 insertions(+), 51 deletions(-)
delete mode 100644 .classpath
delete mode 100644 .gitignore
create mode 100644 .idea/.gitignore
create mode 100644 .idea/misc.xml
create mode 100644 .idea/modules.xml
create mode 100644 .idea/uiDesigner.xml
create mode 100644 .idea/vcs.xml
delete mode 100644 .project
delete mode 100644 .settings/org.eclipse.jdt.core.prefs
create mode 100644 java2022spring.iml
delete mode 100644 readme.md
create mode 100644 src/java2022spring/Calculator.java
rename src/java2022spring/{Test.java => MainApp.java} (44%)
diff --git a/.classpath b/.classpath
deleted file mode 100644
index ac9ce57..0000000
--- a/.classpath
+++ /dev/null
@@ -1,10 +0,0 @@
-
-
-
-
-
-
-
-
-
-
diff --git a/.gitignore b/.gitignore
deleted file mode 100644
index ae3c172..0000000
--- a/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/bin/
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/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..07115cd
--- /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..ea25cb6
--- /dev/null
+++ b/.idea/modules.xml
@@ -0,0 +1,8 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/.idea/uiDesigner.xml b/.idea/uiDesigner.xml
new file mode 100644
index 0000000..e96534f
--- /dev/null
+++ b/.idea/uiDesigner.xml
@@ -0,0 +1,124 @@
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+ -
+
+
+
+
+ -
+
+
+ -
+
+
+
+
+
\ 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/.project b/.project
deleted file mode 100644
index b7e8a74..0000000
--- a/.project
+++ /dev/null
@@ -1,17 +0,0 @@
-
-
- java2022spring
-
-
-
-
-
- org.eclipse.jdt.core.javabuilder
-
-
-
-
-
- org.eclipse.jdt.core.javanature
-
-
diff --git a/.settings/org.eclipse.jdt.core.prefs b/.settings/org.eclipse.jdt.core.prefs
deleted file mode 100644
index dbc27c5..0000000
--- a/.settings/org.eclipse.jdt.core.prefs
+++ /dev/null
@@ -1,14 +0,0 @@
-eclipse.preferences.version=1
-org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
-org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
-org.eclipse.jdt.core.compiler.compliance=17
-org.eclipse.jdt.core.compiler.debug.lineNumber=generate
-org.eclipse.jdt.core.compiler.debug.localVariable=generate
-org.eclipse.jdt.core.compiler.debug.sourceFile=generate
-org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
-org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
-org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=warning
-org.eclipse.jdt.core.compiler.release=enabled
-org.eclipse.jdt.core.compiler.source=17
diff --git a/java2022spring.iml b/java2022spring.iml
new file mode 100644
index 0000000..c90834f
--- /dev/null
+++ b/java2022spring.iml
@@ -0,0 +1,11 @@
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/readme.md b/readme.md
deleted file mode 100644
index 4af16ad..0000000
--- a/readme.md
+++ /dev/null
@@ -1,2 +0,0 @@
-# ѧ
-0103
\ No newline at end of file
diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java
new file mode 100644
index 0000000..3975aab
--- /dev/null
+++ b/src/java2022spring/Calculator.java
@@ -0,0 +1,20 @@
+package java2022spring;
+
+import javax.swing.*;
+import java.awt.*;
+public class Calculator extends JFrame{
+ Calculator(){
+ setTitle("计算器");
+ Container con1=this.getContentPane();
+ con1.setBackground(Color.white);//背景色
+ //居中窗口
+ Toolkit kit=Toolkit.getDefaultToolkit();
+ Dimension ScreenSize=kit.getScreenSize();
+ int ScreenWidth=ScreenSize.width;
+ int ScreenHeight=ScreenSize.height;
+ //设置
+ this.setBounds((ScreenWidth-500)/2,(ScreenHeight-500)/2,500,500);
+ setVisible(true);
+ setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ }
+}
diff --git a/src/java2022spring/Test.java b/src/java2022spring/MainApp.java
similarity index 44%
rename from src/java2022spring/Test.java
rename to src/java2022spring/MainApp.java
index 63a6bd1..5c32fd6 100644
--- a/src/java2022spring/Test.java
+++ b/src/java2022spring/MainApp.java
@@ -1,7 +1,8 @@
-package java2022spring;
-
-public class Test {
- public static void main(String[] args) {
- System.out.println("Hello world!测试免密码提交");
- }
-}
+package java2022spring;
+public class MainApp {
+ //程序入口
+ public static void main(String[] args) {
+ Calculator MainWindow=new Calculator();
+ }
+ }
+
--
Gitee
From 715010b0c15d51c94c20ade6e8d611d3009fc58a Mon Sep 17 00:00:00 2001
From: xuetao <531074036@qq.com>
Date: Sat, 14 May 2022 15:49:06 +0800
Subject: [PATCH 05/21] =?UTF-8?q?=E5=BC=80=E5=A7=8B=E9=A1=B9=E7=9B=AE?=
=?UTF-8?q?=EF=BC=8C=E5=85=88=E7=AE=80=E5=8D=95=E5=86=99=E4=BA=86=E4=B8=80?=
=?UTF-8?q?=E4=B8=AA=E8=AE=A1=E7=AE=97=E5=99=A8=E7=9A=84=E5=9F=BA=E7=A1=80?=
=?UTF-8?q?=E6=A1=86=E6=9E=B6=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/java2022spring/Calculator.java | 1 -
src/java2022spring/MainApp.java | 1 +
2 files changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java
index 3975aab..07ca92e 100644
--- a/src/java2022spring/Calculator.java
+++ b/src/java2022spring/Calculator.java
@@ -4,7 +4,6 @@ import javax.swing.*;
import java.awt.*;
public class Calculator extends JFrame{
Calculator(){
- setTitle("计算器");
Container con1=this.getContentPane();
con1.setBackground(Color.white);//背景色
//居中窗口
diff --git a/src/java2022spring/MainApp.java b/src/java2022spring/MainApp.java
index 5c32fd6..367cef5 100644
--- a/src/java2022spring/MainApp.java
+++ b/src/java2022spring/MainApp.java
@@ -3,6 +3,7 @@ public class MainApp {
//程序入口
public static void main(String[] args) {
Calculator MainWindow=new Calculator();
+ MainWindow.setTitle("计算器");
}
}
--
Gitee
From e3cd85e08d84c9df3a048c7be2f889bf001ceefe Mon Sep 17 00:00:00 2001
From: xuetao <531074036@qq.com>
Date: Sun, 15 May 2022 01:02:55 +0800
Subject: [PATCH 06/21] =?UTF-8?q?=E5=88=9B=E5=BB=BA=E4=BA=86=E5=A4=A7?=
=?UTF-8?q?=E9=83=A8=E5=88=86=E6=8C=89=E9=92=AE=E5=92=8C=E8=A1=A8=E8=BE=BE?=
=?UTF-8?q?=E5=BC=8F=E7=BB=93=E6=9E=9C=E6=A1=86=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/java2022spring/Calculator.java | 54 +++++++++++++++++++++++-------
src/java2022spring/MainApp.java | 13 +++++--
2 files changed, 52 insertions(+), 15 deletions(-)
diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java
index 07ca92e..aaf3aea 100644
--- a/src/java2022spring/Calculator.java
+++ b/src/java2022spring/Calculator.java
@@ -3,17 +3,45 @@ package java2022spring;
import javax.swing.*;
import java.awt.*;
public class Calculator extends JFrame{
- Calculator(){
- Container con1=this.getContentPane();
- con1.setBackground(Color.white);//背景色
- //居中窗口
- Toolkit kit=Toolkit.getDefaultToolkit();
- Dimension ScreenSize=kit.getScreenSize();
- int ScreenWidth=ScreenSize.width;
- int ScreenHeight=ScreenSize.height;
- //设置
- this.setBounds((ScreenWidth-500)/2,(ScreenHeight-500)/2,500,500);
- setVisible(true);
- setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+
+ public Calculator(String s,int x,int y,int w,int h){
+ //布局(使用GridBagLayout)
+ GridBagLayout all=new GridBagLayout();
+ GridBagConstraints g=new GridBagConstraints();
+ setLayout(all);
+ g.weightx=0.01;
+ g.weighty=0.01;
+ g.fill=GridBagConstraints.BOTH;
+ g.gridwidth=4;
+ g.gridheight=1;
+ setBounds((x-500)/2,(y-500)/2,w,h);
+ setTitle(s);
+ JTextField expression=new JTextField();
+ expression.setEditable(false);
+ JTextField result=new JTextField();
+ result.setEditable(false);
+ add(expression,g);
+ g.gridy=2;
+ add(result,g);
+ //菜单选项
+ JMenuBar menus = new JMenuBar();
+ JMenu menu1 = new JMenu("菜单");
+ menus.add(menu1);
+ setJMenuBar(menus);
+ //按钮
+ g.gridwidth=1;
+ g.gridheight=1;
+ JButton[] buttons=new JButton[16];
+ String[] keys ={"7","8","9","×","4","5","6","-","1","2","3","+","±","0",".","="};
+ for (int j = 0; j <=3; j++) {//利用for批量添加按钮
+ g.gridy=j+3;
+ for (int k = 0; k <=3; k++) {
+ g.gridx=k;
+ buttons[4*j+k]=new JButton(keys[4*j+k]);
+ all.setConstraints(buttons[4*j+k],g);
+ add(buttons[4*j+k],g);
+ }
+ }
+ //
+ }
}
-}
diff --git a/src/java2022spring/MainApp.java b/src/java2022spring/MainApp.java
index 367cef5..a3938a5 100644
--- a/src/java2022spring/MainApp.java
+++ b/src/java2022spring/MainApp.java
@@ -1,9 +1,18 @@
package java2022spring;
+
+import javax.swing.*;
+import java.awt.*;
public class MainApp {
//程序入口
public static void main(String[] args) {
- Calculator MainWindow=new Calculator();
- MainWindow.setTitle("计算器");
+ //居中窗口
+ Toolkit kit=Toolkit.getDefaultToolkit();
+ Dimension ScreenSize=kit.getScreenSize();
+ int ScreenWidth=ScreenSize.width;
+ int ScreenHeight=ScreenSize.height;
+ Calculator MainWindow=new Calculator("计算器",ScreenWidth,ScreenHeight,500,500);
+ MainWindow.setVisible(true);
+ MainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
--
Gitee
From 2c868e8c317b687809095e59ee81545d465c89c6 Mon Sep 17 00:00:00 2001
From: xuetao <531074036@qq.com>
Date: Sun, 22 May 2022 23:42:06 +0800
Subject: [PATCH 07/21] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E9=83=A8?=
=?UTF-8?q?=E5=88=86=E4=BB=A3=E7=A0=81=E7=BB=93=E6=9E=84=EF=BC=8C=E5=AE=8C?=
=?UTF-8?q?=E5=96=84=E4=BA=86=E9=9C=80=E8=A6=81=E7=9A=84=E5=8F=98=E9=87=8F?=
=?UTF-8?q?=EF=BC=8C=E4=B8=BA=E7=9B=91=E5=90=AC=E5=99=A8=E5=81=9A=E5=87=86?=
=?UTF-8?q?=E5=A4=87=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/java2022spring/Calculator.java | 108 +++++++++++++++++++++++------
src/java2022spring/MainApp.java | 1 +
2 files changed, 87 insertions(+), 22 deletions(-)
diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java
index aaf3aea..9aaa902 100644
--- a/src/java2022spring/Calculator.java
+++ b/src/java2022spring/Calculator.java
@@ -1,13 +1,34 @@
package java2022spring;
-
import javax.swing.*;
import java.awt.*;
-public class Calculator extends JFrame{
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+public class Calculator extends JFrame implements ActionListener {
+ //布局(使用GridBagLayout)
+ GridBagLayout all=new GridBagLayout();
+ GridBagConstraints g=new GridBagConstraints();
+ //文本框(用于显示表达式和结果)
+ JTextField expression=new JTextField();
+ JTextField result=new JTextField("0");
+ //文本框字符串初始化
+ String exp="";
+ String res="";
+ //菜单选项
+ JMenuBar menus = new JMenuBar();
+ JMenu menu1 = new JMenu("菜单");
+ //按钮
+ JButton[] buttons=new JButton[24];
+ String[] keys ={"%","√","²","1/x","CE","C","←","÷","7","8","9","×","4","5","6","-","1","2","3","+","±","0",".","="};
+ //存放操作数,为double型
+ double num1;
+ double num2;
+ double num3;
+ //创建两个boolean变量,用于判定是否输入了运算符以及多位数输入判断
+ boolean operate=false;
+ boolean mix=true;
public Calculator(String s,int x,int y,int w,int h){
- //布局(使用GridBagLayout)
- GridBagLayout all=new GridBagLayout();
- GridBagConstraints g=new GridBagConstraints();
+ //设置窗口大小和位置
setLayout(all);
g.weightx=0.01;
g.weighty=0.01;
@@ -16,32 +37,75 @@ public class Calculator extends JFrame{
g.gridheight=1;
setBounds((x-500)/2,(y-500)/2,w,h);
setTitle(s);
- JTextField expression=new JTextField();
+ //添加文本框
expression.setEditable(false);
- JTextField result=new JTextField();
+ expression.setHorizontalAlignment(JTextField.RIGHT);
result.setEditable(false);
+ result.setHorizontalAlignment(JTextField.RIGHT);
add(expression,g);
g.gridy=2;
add(result,g);
- //菜单选项
- JMenuBar menus = new JMenuBar();
- JMenu menu1 = new JMenu("菜单");
+ //添加菜单
menus.add(menu1);
setJMenuBar(menus);
- //按钮
+ //添加按钮
g.gridwidth=1;
g.gridheight=1;
- JButton[] buttons=new JButton[16];
- String[] keys ={"7","8","9","×","4","5","6","-","1","2","3","+","±","0",".","="};
- for (int j = 0; j <=3; j++) {//利用for批量添加按钮
- g.gridy=j+3;
- for (int k = 0; k <=3; k++) {
- g.gridx=k;
- buttons[4*j+k]=new JButton(keys[4*j+k]);
- all.setConstraints(buttons[4*j+k],g);
- add(buttons[4*j+k],g);
- }
+ for (int j = 0; j <=5; j++) {//利用for批量添加按钮
+ g.gridy=j+3;
+ for (int k = 0; k <=3; k++) {
+ g.gridx=k;
+ buttons[4*j+k]=new JButton(keys[4*j+k]);
+ buttons[4*j+k].addActionListener(this);
+ all.setConstraints(buttons[4*j+k],g);
+ add(buttons[4*j+k],g);
}
- //
}
+ }
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ String str=e.getActionCommand();
+ res=result.getText();
+ int operator = 0;
+ //点击后在文本框显示数字
+ if(str.equals("1") || str.equals("2") || str.equals("3") || str.equals("4") || str.equals("5") || str.equals("6") || str.equals("7") || str.equals("8") || str.equals("9") || str.equals("0")){
+ if(!mix){//判断是否为重新输入的数字
+ result.setText(res+str);//不是则放在前数的后面
+ }
+ else {
+ result.setText(str);//是则将数字放入文本框
+ mix=false;//并将判断符改为false,后续输入数字都会放置在原文本框的数后面
+ }
+ return;
+ }
+ //C和CE功能
+ if(str.equals("CE"))
+ {
+ result.setText("0");
+ mix = true;
+ }
+ if(str.equals("C"))
+ {
+ expression.setText("");
+ result.setText("0");
+ operator = 0;//把之前按下到操作到运算符到键清除
+ mix = true;
+ }
+ //加减乘除表达式的显示
+ mix=true;//保证操作运算符的后,重置结果框,显示第二个数
+ if(str.equals("+")){
+ operator=1;//确定加法为1算法,以便后续匹配加法算法
+ num1 = Double.parseDouble(result.getText());
+ exp=num1+"+";
+ expression.setText(exp);
+ operate=true;
+ }
+
+ //处理运算符输入后的运算操作
+ if(operate){
+ if(operator == 1){
+
+ }
+ }
}
+}
diff --git a/src/java2022spring/MainApp.java b/src/java2022spring/MainApp.java
index a3938a5..e4cc113 100644
--- a/src/java2022spring/MainApp.java
+++ b/src/java2022spring/MainApp.java
@@ -10,6 +10,7 @@ public class MainApp {
Dimension ScreenSize=kit.getScreenSize();
int ScreenWidth=ScreenSize.width;
int ScreenHeight=ScreenSize.height;
+ //传相关参数(窗口标题、居中)
Calculator MainWindow=new Calculator("计算器",ScreenWidth,ScreenHeight,500,500);
MainWindow.setVisible(true);
MainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
--
Gitee
From 6a0c6efee768dfd6ad54b71fa33b70de40de34da Mon Sep 17 00:00:00 2001
From: xuetao <531074036@qq.com>
Date: Fri, 27 May 2022 02:52:17 +0800
Subject: [PATCH 08/21] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BA=86=E5=9B=9B?=
=?UTF-8?q?=E5=88=99=E8=BF=90=E7=AE=97=E9=80=BB=E8=BE=91=EF=BC=8C=E7=9B=AE?=
=?UTF-8?q?=E5=89=8D=E8=83=BD=E5=A4=9F=E8=BF=9B=E8=A1=8C=E8=BF=9E=E7=BB=AD?=
=?UTF-8?q?=E7=9A=84=E5=9B=9B=E5=88=99=E6=B7=B7=E5=90=88=E8=AE=A1=E7=AE=97?=
=?UTF-8?q?=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/java2022spring/Calculator.java | 365 ++++++++++++++++++++++-------
1 file changed, 285 insertions(+), 80 deletions(-)
diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java
index 9aaa902..0834f33 100644
--- a/src/java2022spring/Calculator.java
+++ b/src/java2022spring/Calculator.java
@@ -3,109 +3,314 @@ import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
+import java.util.Objects;
public class Calculator extends JFrame implements ActionListener {
//布局(使用GridBagLayout)
- GridBagLayout all=new GridBagLayout();
- GridBagConstraints g=new GridBagConstraints();
+ GridBagLayout all = new GridBagLayout();
+ GridBagConstraints g = new GridBagConstraints();
//文本框(用于显示表达式和结果)
- JTextField expression=new JTextField();
- JTextField result=new JTextField("0");
+ JTextField expression = new JTextField();
+ JTextField result = new JTextField("0");
//文本框字符串初始化
- String exp="";
- String res="";
+ String exp = "";
+ String res = "";
//菜单选项
JMenuBar menus = new JMenuBar();
JMenu menu1 = new JMenu("菜单");
//按钮
- JButton[] buttons=new JButton[24];
- String[] keys ={"%","√","²","1/x","CE","C","←","÷","7","8","9","×","4","5","6","-","1","2","3","+","±","0",".","="};
+ JButton[] buttons = new JButton[24];
+ String[] keys = {"%", "√", "²", "1/x", "CE", "C", "←", "÷", "7", "8", "9", "×", "4", "5", "6", "-", "1", "2", "3", "+", "±", "0", ".", "="};
//存放操作数,为double型
double num1;
double num2;
double num3;
- //创建两个boolean变量,用于判定是否输入了运算符以及多位数输入判断
- boolean operate=false;
- boolean mix=true;
- public Calculator(String s,int x,int y,int w,int h){
- //设置窗口大小和位置
- setLayout(all);
- g.weightx=0.01;
- g.weighty=0.01;
- g.fill=GridBagConstraints.BOTH;
- g.gridwidth=4;
- g.gridheight=1;
- setBounds((x-500)/2,(y-500)/2,w,h);
- setTitle(s);
- //添加文本框
- expression.setEditable(false);
- expression.setHorizontalAlignment(JTextField.RIGHT);
- result.setEditable(false);
- result.setHorizontalAlignment(JTextField.RIGHT);
- add(expression,g);
- g.gridy=2;
- add(result,g);
- //添加菜单
- menus.add(menu1);
- setJMenuBar(menus);
- //添加按钮
- g.gridwidth=1;
- g.gridheight=1;
- for (int j = 0; j <=5; j++) {//利用for批量添加按钮
- g.gridy=j+3;
- for (int k = 0; k <=3; k++) {
- g.gridx=k;
- buttons[4*j+k]=new JButton(keys[4*j+k]);
- buttons[4*j+k].addActionListener(this);
- all.setConstraints(buttons[4*j+k],g);
- add(buttons[4*j+k],g);
- }
- }
- }
+ int operate;//状态标识
+ int operator;//操作符标识:0表示无,1表示+,2表示-,3表示×,4表示÷
+ //创建一个boolean变量,用于多位数输入判断
+ boolean mix = true;
+
+ public Calculator(String s, int x, int y, int w, int h) {
+ //设置窗口大小和位置
+ setLayout(all);
+ g.weightx = 0.01;
+ g.weighty = 0.01;
+ g.fill = GridBagConstraints.BOTH;
+ g.gridwidth = 4;
+ g.gridheight = 1;
+ setBounds((x - 500) / 2, (y - 500) / 2, w, h);
+ setTitle(s);
+ //添加文本框
+ expression.setEditable(false);
+ expression.setHorizontalAlignment(JTextField.RIGHT);
+ result.setEditable(false);
+ result.setHorizontalAlignment(JTextField.RIGHT);
+ add(expression, g);
+ g.gridy = 2;
+ add(result, g);
+ //添加菜单
+ menus.add(menu1);
+ setJMenuBar(menus);
+ //添加按钮
+ g.gridwidth = 1;
+ g.gridheight = 1;
+ for (int j = 0; j <= 5; j++) {//利用for批量添加按钮
+ g.gridy = j + 3;
+ for (int k = 0; k <= 3; k++) {
+ g.gridx = k;
+ buttons[4 * j + k] = new JButton(keys[4 * j + k]);
+ buttons[4 * j + k].addActionListener(this);
+ all.setConstraints(buttons[4 * j + k], g);
+ add(buttons[4 * j + k], g);
+ }
+ }
+ }
+
@Override
public void actionPerformed(ActionEvent e) {
- String str=e.getActionCommand();
- res=result.getText();
- int operator = 0;
- //点击后在文本框显示数字
- if(str.equals("1") || str.equals("2") || str.equals("3") || str.equals("4") || str.equals("5") || str.equals("6") || str.equals("7") || str.equals("8") || str.equals("9") || str.equals("0")){
- if(!mix){//判断是否为重新输入的数字
- result.setText(res+str);//不是则放在前数的后面
- }
- else {
- result.setText(str);//是则将数字放入文本框
- mix=false;//并将判断符改为false,后续输入数字都会放置在原文本框的数后面
- }
- return;
- }
- //C和CE功能
- if(str.equals("CE"))
- {
- result.setText("0");
+ String str = e.getActionCommand();
+ res = result.getText();
+ //点击后在文本框显示数字
+ if (str.equals("1") || str.equals("2") || str.equals("3") || str.equals("4") || str.equals("5") || str.equals("6") || str.equals("7") || str.equals("8") || str.equals("9") || str.equals("0")) {
+ if (!mix) {//判断是否为重新输入的数字
+ result.setText(res + str);//不是则放在前数的后面
+ } else {
+ result.setText(str);//是则将数字放入文本框
+ mix = false;//并将判断符改为false,后续输入数字都会放置在原文本框的数后面
+ }
+ return;
+ }
+ //C和CE功能
+ if (str.equals("CE")) {
+ result.setText("");
+ num2 = 0;
mix = true;
}
- if(str.equals("C"))
- {
+ if (str.equals("C")) {
expression.setText("");
result.setText("0");
- operator = 0;//把之前按下到操作到运算符到键清除
- mix = true;
+ num1 = 0;
+ num2 = 0;
+ num3 = 0;
+ operate=0;
+ operator=0;
}
//加减乘除表达式的显示
- mix=true;//保证操作运算符的后,重置结果框,显示第二个数
- if(str.equals("+")){
- operator=1;//确定加法为1算法,以便后续匹配加法算法
- num1 = Double.parseDouble(result.getText());
- exp=num1+"+";
- expression.setText(exp);
- operate=true;
+ mix = true;//保证操作运算符输入后,重置结果框,显示第二个数
+ if (str.equals("+")) {
+ try {
+ //已有其他运算符且没输入第二个数,则只改变操作符
+ if(operator!=1&&operate==1&&Objects.equals(result.getText(), "")){
+ expression.setText(num1 + "+");
+ operator = 1;
+ }
+ //已有其他运算符但输入了第二个数,则根据上一个运算符先计算然后再修改运算符
+ else if(operator!=1&&operate==1&&!Objects.equals(result.getText(), "")){
+ num2 = Double.parseDouble(result.getText());
+ result.setText("");
+ switch (operator) {
+ case 2 -> num3 = sub(num1, num2);
+ case 3 -> num3 = multi(num1, num2);
+ case 4 -> num3 = division(num1, num2);
+ }
+ num1 = num3;
+ expression.setText(num1 + "+");
+ operator = 1;
+ }
+ else if (operate == 0) {
+ operate = 1;
+ operator = 1;
+ num1 = Double.parseDouble(result.getText());
+ expression.setText(num1 + "+");
+ result.setText("");
+ }
+ else if (operate == 1) {
+ num2 = Double.parseDouble(result.getText());
+ result.setText("");
+ num3 = plus(num1, num2);
+ expression.setText(num3 + "+");
+ num1 = num3;
+ }
+ }
+ catch (NumberFormatException exp){}
}
-
- //处理运算符输入后的运算操作
- if(operate){
- if(operator == 1){
-
+ if (str.equals("-")) {
+ try {
+ if(operator!=2&&operate==1&&Objects.equals(result.getText(), "")) {
+ expression.setText(num1 + "-");
+ operator=2;
+ }
+ else if(operator!=2&&operate==1&&!Objects.equals(result.getText(), "")){
+ switch (operator) {
+ case 1 -> num3 = plus(num1, num2);
+ case 3 -> num3 = multi(num1, num2);
+ case 4 -> num3 = division(num1, num2);
+ }
+ num1=num3;
+ expression.setText(num1 + "-");
+ operator = 2;
+ }
+ else if (operate == 0) {
+ operator=2;
+ num1 = Double.parseDouble(result.getText());
+ expression.setText(num1 + "-");
+ result.setText("");
+ operate=1;
+ }
+ else if(operate==1) {
+ num2 = Double.parseDouble(result.getText());
+ result.setText("");
+ num3 = sub(num1, num2);
+ expression.setText(num3 + "-");
+ num1 = num3;
+ }
+ } catch (NumberFormatException exp1) {
+ }
+ }
+ if (str.equals("×")) {
+ try {
+ if(operator!=3&&operate==1&&Objects.equals(result.getText(), "")){
+ expression.setText(num1 + "×");
+ operator = 3;
+ }
+ else if(operator!=3&&operate==1&&!Objects.equals(result.getText(), "")){
+ num2 = Double.parseDouble(result.getText());
+ result.setText("");
+ switch (operator) {
+ case 1 -> num3 = plus(num1, num2);
+ case 2 -> num3 = sub(num1, num2);
+ case 4 -> num3 = division(num1, num2);
+ }
+ num1 = num3;
+ expression.setText(num1 + "×");
+ operator = 3;
+ }
+ else if (operate == 0) {
+ operate = 1;
+ operator = 3;
+ num1 = Double.parseDouble(result.getText());
+ expression.setText(num1 + "×");
+ result.setText("");
+ }
+ else if (operate == 1) {
+ num2 = Double.parseDouble(result.getText());
+ result.setText("");
+ num3 = multi(num1, num2);
+ expression.setText(num3 + "×");
+ num1 = num3;
+ }
+ }
+ catch (NumberFormatException exp){}
+ }
+ if (str.equals("÷")) {
+ try {
+ if(operator!=4&&operate==1&&Objects.equals(result.getText(), "")){
+ expression.setText(num1 + "÷");
+ operator = 4;
+ }
+ else if(operator!=4&&operate==1&&!Objects.equals(result.getText(), "")){
+ num2 = Double.parseDouble(result.getText());
+ result.setText("");
+ switch (operator) {
+ case 1 -> num3 = plus(num1, num2);
+ case 2 -> num3 = sub(num1, num2);
+ case 3 -> num3 = multi(num1, num2);
+ }
+ num1 = num3;
+ expression.setText(num1 + "÷");
+ operator = 4;
+ }
+ else if (operate == 0) {
+ operate = 1;
+ operator = 4;
+ num1 = Double.parseDouble(result.getText());
+ expression.setText(num1 + "÷");
+ result.setText("");
+ }
+ else if (operate == 1) {
+ num2 = Double.parseDouble(result.getText());
+ result.setText("");
+ num3 = division(num1, num2);
+ expression.setText(num3 + "÷");
+ num1 = num3;
+ }
}
+ catch (NumberFormatException exp){}
}
+ //等于后的操作
+ if(str.equals("=")){
+ //结果框已输入,且具有运算符,先获取第二个数
+ if(!Objects.equals(result.getText(), "")&&operate==1&&!Objects.equals(expression.getText(), ""))
+ {
+ num2= Double.parseDouble(result.getText());
+ }
+ //有运算符但没输入第二个数,清空表达式框,将第一个数放回结果框
+ if(Objects.equals(result.getText(), "")&&operate==1){
+ res=String.valueOf(num1);
+ expression.setText("");
+ result.setText(res);
+ }
+ //运算符已经清除,但仍然留有表达式
+ if(operator==0&&!Objects.equals(expression.getText(), "")){
+ res= String.valueOf(num3);
+ result.setText(res);
+ }
+ if(operator==1) {
+ num3=plus(num1,num2);
+ expression.setText(num1+"+"+num2+"=");
+ res= String.valueOf(num3);
+ result.setText(res);
+ operate=0;
+ operator=0;
+ }
+ if(operator==2){
+ num3=sub(num1,num2);
+ expression.setText(num1+"-"+num2+"=");
+ res= String.valueOf(num3);
+ result.setText(res);
+ operate=0;
+ operator=0;
+ }
+ if(operator==3){
+ num3=multi(num1,num2);
+ expression.setText(num1+"×"+num2+"=");
+ res= String.valueOf(num3);
+ result.setText(res);
+ operate=0;
+ operator=0;
+ }
+ if(operator==4){
+ num3=division(num1,num2);
+ expression.setText(num1+"÷"+num2+"=");
+ res= String.valueOf(num3);
+ result.setText(res);
+ operate=0;
+ operator=0;
+ }
+ }
+ }
+ //加法
+ private double plus (double num1, double num2){
+ double result;
+ result = num1 + num2;
+ return result;
+ }
+ //减法
+ private double sub (double num1, double num2){
+ double result;
+ result = num1 - num2;
+ return result;
+ }
+ //乘法
+ private double multi(double num1,double num2){
+ double result;
+ result = num1 * num2;
+ return result;
+ }
+ //除法
+ private double division(double num1,double num2){
+ double result;
+ result = num1 / num2;
+ return result;
}
}
--
Gitee
From 1b703c973b2d02999bc5d3cdec2ffeff299be986 Mon Sep 17 00:00:00 2001
From: xuetao <531074036@qq.com>
Date: Fri, 27 May 2022 15:56:49 +0800
Subject: [PATCH 09/21] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E5=B0=8F?=
=?UTF-8?q?=E6=95=B0=E7=82=B9=E5=92=8C=E9=80=80=E6=A0=BC=E5=8A=9F=E8=83=BD?=
=?UTF-8?q?=E3=80=82=E4=BF=AE=E5=A4=8D=E4=B8=80=E4=BA=9BCE=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD=E5=92=8C=E8=BF=90=E7=AE=97=E7=AC=A6=E8=BE=93=E5=85=A5?=
=?UTF-8?q?=E6=97=B6=E7=9A=84bug=E3=80=82=E5=85=B3=E9=97=AD=E7=A8=8B?=
=?UTF-8?q?=E5=BA=8F=E6=9C=80=E5=A4=A7=E5=8C=96=E5=8A=9F=E8=83=BD=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/java2022spring/Calculator.java | 54 +++++++++++++++++++++++++++---
src/java2022spring/MainApp.java | 1 +
2 files changed, 51 insertions(+), 4 deletions(-)
diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java
index 0834f33..4884de6 100644
--- a/src/java2022spring/Calculator.java
+++ b/src/java2022spring/Calculator.java
@@ -26,7 +26,8 @@ public class Calculator extends JFrame implements ActionListener {
double num2;
double num3;
int operate;//状态标识
- int operator;//操作符标识:0表示无,1表示+,2表示-,3表示×,4表示÷
+ //操作符标识:0表示无,1表示+,2表示-,3表示×,4表示÷
+ int operator;
//创建一个boolean变量,用于多位数输入判断
boolean mix = true;
@@ -69,9 +70,9 @@ public class Calculator extends JFrame implements ActionListener {
@Override
public void actionPerformed(ActionEvent e) {
String str = e.getActionCommand();
- res = result.getText();
//点击后在文本框显示数字
if (str.equals("1") || str.equals("2") || str.equals("3") || str.equals("4") || str.equals("5") || str.equals("6") || str.equals("7") || str.equals("8") || str.equals("9") || str.equals("0")) {
+ res = result.getText();
if (!mix) {//判断是否为重新输入的数字
result.setText(res + str);//不是则放在前数的后面
} else {
@@ -80,13 +81,29 @@ public class Calculator extends JFrame implements ActionListener {
}
return;
}
+ //小数点
+ if(str.equals(".")){
+ res = result.getText();
+ //如果不包含点且结果框不为空,则在后面加上点
+ if(!res.contains(".")&&!Objects.equals(res,"")){
+ result.setText(res+".");
+ mix=false;
+ }
+ //如果不包含点且结果框为空,则自动补0并加点
+ else if(!res.contains(".")&&Objects.equals(result.getText(),"")){
+ result.setText("0"+".");
+ mix=false;
+ }
+ }
//C和CE功能
if (str.equals("CE")) {
+ //清空当前输入的数字
result.setText("");
num2 = 0;
mix = true;
}
if (str.equals("C")) {
+ //清空所有
expression.setText("");
result.setText("0");
num1 = 0;
@@ -94,10 +111,36 @@ public class Calculator extends JFrame implements ActionListener {
num3 = 0;
operate=0;
operator=0;
+ mix=true;
+ }
+ //backspace退格(可以删除运算符直至恢复至起始状态)
+ if(str.equals("←")){
+ String text=result.getText();
+ int i=text.length();
+ if(i>0)
+ { //截取前面的一段字符串返回
+ text=text.substring(0,i-1);
+ result.setText(text);
+ }
+ //如果点击时结果框已经被删空了,但表达式框有内容,则删除运算符,结果框显示前一个操作数
+ else if(Objects.equals(result.getText(),"")&&!Objects.equals(expression.getText(),""))
+ {
+ operator=0;
+ operate=0;
+ result.setText(String.valueOf(num1));
+ expression.setText("");
+ }
+ //如果点击后结果框已经被删空了,且表达式框无内容,删除所有操作数,结果框显示0
+ if(Objects.equals(result.getText(),"")&&Objects.equals(expression.getText(),"")){
+ num1=0;
+ num2=0;
+ num3=0;
+ result.setText("0");
+ }
}
- //加减乘除表达式的显示
- mix = true;//保证操作运算符输入后,重置结果框,显示第二个数
+ //加减乘除表达式的显示和处理多步计算
if (str.equals("+")) {
+ mix = true;//保证可以正确输入第二个数(已修复)
try {
//已有其他运算符且没输入第二个数,则只改变操作符
if(operator!=1&&operate==1&&Objects.equals(result.getText(), "")){
@@ -135,6 +178,7 @@ public class Calculator extends JFrame implements ActionListener {
catch (NumberFormatException exp){}
}
if (str.equals("-")) {
+ mix = true;
try {
if(operator!=2&&operate==1&&Objects.equals(result.getText(), "")) {
expression.setText(num1 + "-");
@@ -168,6 +212,7 @@ public class Calculator extends JFrame implements ActionListener {
}
}
if (str.equals("×")) {
+ mix = true;
try {
if(operator!=3&&operate==1&&Objects.equals(result.getText(), "")){
expression.setText(num1 + "×");
@@ -203,6 +248,7 @@ public class Calculator extends JFrame implements ActionListener {
catch (NumberFormatException exp){}
}
if (str.equals("÷")) {
+ mix = true;
try {
if(operator!=4&&operate==1&&Objects.equals(result.getText(), "")){
expression.setText(num1 + "÷");
diff --git a/src/java2022spring/MainApp.java b/src/java2022spring/MainApp.java
index e4cc113..ab4d922 100644
--- a/src/java2022spring/MainApp.java
+++ b/src/java2022spring/MainApp.java
@@ -14,6 +14,7 @@ public class MainApp {
Calculator MainWindow=new Calculator("计算器",ScreenWidth,ScreenHeight,500,500);
MainWindow.setVisible(true);
MainWindow.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
+ MainWindow.setResizable(false);
}
}
--
Gitee
From 5990f2d972fb599f3a3c6c76c6bd62df0188c6d0 Mon Sep 17 00:00:00 2001
From: xuetao <531074036@qq.com>
Date: Sat, 28 May 2022 01:01:54 +0800
Subject: [PATCH 10/21] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E9=83=A8?=
=?UTF-8?q?=E5=88=86=E6=9B=B4=E8=AF=A6=E7=BB=86=E7=9A=84=E6=B3=A8=E9=87=8A?=
=?UTF-8?q?=E8=AF=B4=E6=98=8E=EF=BC=8C=E5=A2=9E=E5=8A=A0=E6=AD=A3=E8=B4=9F?=
=?UTF-8?q?=E5=8F=B7=E3=80=81=E7=99=BE=E5=88=86=E5=8F=B7=E3=80=81=E6=A0=B9?=
=?UTF-8?q?=E5=8F=B7=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=BF=AE=E6=AD=A3=E4=B8=80?=
=?UTF-8?q?=E4=BA=9Bbug=EF=BC=8C=E5=A2=9E=E5=8A=A0=E9=99=A4=E6=B3=95?=
=?UTF-8?q?=E4=B8=AD=E9=99=A4=E6=95=B0=E4=B8=BA=E9=9B=B6=E6=97=B6=E7=9A=84?=
=?UTF-8?q?=E5=A4=84=E7=90=86=E9=80=BB=E8=BE=91=E3=80=81=E6=8F=90=E7=A4=BA?=
=?UTF-8?q?=E7=AD=89=EF=BC=8C=E9=81=BF=E5=85=8D=E9=99=A4=E6=95=B0=E4=B8=BA?=
=?UTF-8?q?=E9=9B=B6=E7=9A=84=E6=83=85=E5=86=B5=E5=87=BA=E7=8E=B0=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/java2022spring/Calculator.java | 131 ++++++++++++++++++++++-------
1 file changed, 100 insertions(+), 31 deletions(-)
diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java
index 4884de6..30e5daf 100644
--- a/src/java2022spring/Calculator.java
+++ b/src/java2022spring/Calculator.java
@@ -5,6 +5,8 @@ import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Objects;
+import static java.lang.Math.sqrt;
+
public class Calculator extends JFrame implements ActionListener {
//布局(使用GridBagLayout)
GridBagLayout all = new GridBagLayout();
@@ -41,9 +43,9 @@ public class Calculator extends JFrame implements ActionListener {
g.gridheight = 1;
setBounds((x - 500) / 2, (y - 500) / 2, w, h);
setTitle(s);
- //添加文本框
- expression.setEditable(false);
- expression.setHorizontalAlignment(JTextField.RIGHT);
+ //设置文本框
+ expression.setEditable(false);//不可编辑
+ expression.setHorizontalAlignment(JTextField.RIGHT);//居右
result.setEditable(false);
result.setHorizontalAlignment(JTextField.RIGHT);
add(expression, g);
@@ -52,15 +54,16 @@ public class Calculator extends JFrame implements ActionListener {
//添加菜单
menus.add(menu1);
setJMenuBar(menus);
- //添加按钮
+ //添加按钮(设置组件宽高均为1)
g.gridwidth = 1;
g.gridheight = 1;
- for (int j = 0; j <= 5; j++) {//利用for批量添加按钮
+ //利用for批量添加按钮
+ for (int j = 0; j <= 5; j++) {
g.gridy = j + 3;
for (int k = 0; k <= 3; k++) {
g.gridx = k;
buttons[4 * j + k] = new JButton(keys[4 * j + k]);
- buttons[4 * j + k].addActionListener(this);
+ buttons[4 * j + k].addActionListener(this);//顺便添加监听器
all.setConstraints(buttons[4 * j + k], g);
add(buttons[4 * j + k], g);
}
@@ -95,6 +98,48 @@ public class Calculator extends JFrame implements ActionListener {
mix=false;
}
}
+ //正负号±,会将结果框的数字变为相反数
+ if(str.equals("±")){
+ try {
+ if (!Objects.equals(result.getText(), "0")) {
+ double change = Double.parseDouble(result.getText());
+ change = -change;
+ result.setText(String.valueOf(change));
+ }
+ }
+ catch (NumberFormatException exp){}
+ }
+ //百分号%,用户点击后会将结果框的数字除以100,如果数字为0则无变化
+ if(str.equals("%")){
+ if(Double.parseDouble(result.getText())!=0){
+ double temp;
+ temp= Double.parseDouble(result.getText())/100;
+ result.setText(String.valueOf(temp));}
+ }
+ //根号
+ if(str.equals("√")){
+ //结果框为空,提示用户先输入需要进行算数平方根的数
+ if(Objects.equals(result.getText(),"")){
+ JOptionPane.showMessageDialog(this,"请先输入需要算数平方根的数。","提示",JOptionPane.INFORMATION_MESSAGE);
+ }
+ try {
+ //表达式框为空,则直接运算
+ if (Objects.equals(expression.getText(), "") && Double.parseDouble(result.getText()) > 0) {
+ num3 = sqrt(Double.parseDouble(result.getText()));
+ expression.setText("sqrt(" + result.getText() + ")=");
+ result.setText(String.valueOf(num3));
+ }
+ //表达式不为空,则只将结果框的数进行算数平方根运算
+ else if (!Objects.equals(expression.getText(), "") && Double.parseDouble(result.getText()) > 0) {
+ double temp;
+ temp = sqrt(Double.parseDouble(result.getText()));
+ result.setText(String.valueOf(temp));
+ } else if (Double.parseDouble(result.getText()) < 0) {
+ JOptionPane.showMessageDialog(this, "负数的算数平方根不存在。", "数学错误", JOptionPane.ERROR_MESSAGE);
+ }
+ }
+ catch (NumberFormatException exp){}
+ }
//C和CE功能
if (str.equals("CE")) {
//清空当前输入的数字
@@ -136,6 +181,7 @@ public class Calculator extends JFrame implements ActionListener {
num2=0;
num3=0;
result.setText("0");
+ mix=true;
}
}
//加减乘除表达式的显示和处理多步计算
@@ -152,13 +198,17 @@ public class Calculator extends JFrame implements ActionListener {
num2 = Double.parseDouble(result.getText());
result.setText("");
switch (operator) {
- case 2 -> num3 = sub(num1, num2);
- case 3 -> num3 = multi(num1, num2);
- case 4 -> num3 = division(num1, num2);
+ case 2 -> {num3 = sub(num1, num2);num1 = num3;expression.setText(num1 + "+");operator = 1;}
+ case 3 -> {num3 = multi(num1, num2);num1 = num3;expression.setText(num1 + "+");operator = 1;}
+ }
+ //对于上一步的除法需要单独判断,如果除数为零,则清空结果框,不进行除法运算,触发错误对话框并清空结果框
+ if(operator==4) {
+ if(num2!=0){num3 = division(num1, num2);num1 = num3;expression.setText(num1 + "+"); operator = 1;}
+ else {
+ JOptionPane.showMessageDialog(this, "除数不能为0!请重新输入。", "数学错误", JOptionPane.ERROR_MESSAGE);
+ result.setText("");
+ }
}
- num1 = num3;
- expression.setText(num1 + "+");
- operator = 1;
}
else if (operate == 0) {
operate = 1;
@@ -186,13 +236,16 @@ public class Calculator extends JFrame implements ActionListener {
}
else if(operator!=2&&operate==1&&!Objects.equals(result.getText(), "")){
switch (operator) {
- case 1 -> num3 = plus(num1, num2);
- case 3 -> num3 = multi(num1, num2);
- case 4 -> num3 = division(num1, num2);
+ case 1 -> {num3 = plus(num1, num2);num1=num3;expression.setText(num1 + "-");operator = 2;}
+ case 3 -> {num3 = multi(num1, num2);num1=num3;expression.setText(num1 + "-");operator = 2;}
+ }
+ if(operator==4) {
+ if(num2!=0){num3 = division(num1, num2);num1 = num3;expression.setText(num1 + "-"); operator = 2;}
+ else {
+ JOptionPane.showMessageDialog(this, "除数不能为0!请重新输入除数。", "数学错误", JOptionPane.ERROR_MESSAGE);
+ result.setText("");
+ }
}
- num1=num3;
- expression.setText(num1 + "-");
- operator = 2;
}
else if (operate == 0) {
operator=2;
@@ -222,13 +275,16 @@ public class Calculator extends JFrame implements ActionListener {
num2 = Double.parseDouble(result.getText());
result.setText("");
switch (operator) {
- case 1 -> num3 = plus(num1, num2);
- case 2 -> num3 = sub(num1, num2);
- case 4 -> num3 = division(num1, num2);
+ case 1 -> {num3 = plus(num1, num2); num1 = num3;expression.setText(num1 + "×"); operator = 3;}
+ case 2 -> {num3 = sub(num1, num2);num1 = num3;expression.setText(num1 + "×"); operator = 3;}
+ }
+ if(operator==4) {
+ if(num2!=0){num3 = division(num1, num2);num1 = num3;expression.setText(num1 + "×"); operator = 3;}
+ else {
+ JOptionPane.showMessageDialog(this, "除数不能为0!请重新输入除数。", "数学错误", JOptionPane.ERROR_MESSAGE);
+ result.setText("");
+ }
}
- num1 = num3;
- expression.setText(num1 + "×");
- operator = 3;
}
else if (operate == 0) {
operate = 1;
@@ -273,13 +329,19 @@ public class Calculator extends JFrame implements ActionListener {
expression.setText(num1 + "÷");
result.setText("");
}
- else if (operate == 1) {
+ //需要判断除数是否为零
+ else if (operate == 1&&Double.parseDouble(result.getText())!=0) {
num2 = Double.parseDouble(result.getText());
result.setText("");
num3 = division(num1, num2);
expression.setText(num3 + "÷");
num1 = num3;
}
+ //增加除数为零时的提示
+ else if (operate == 1&&Double.parseDouble(result.getText())==0) {
+ JOptionPane.showMessageDialog(this, "除数不能为0!请重新输入除数。", "数学错误", JOptionPane.ERROR_MESSAGE);
+ result.setText("");
+ }
}
catch (NumberFormatException exp){}
}
@@ -301,6 +363,7 @@ public class Calculator extends JFrame implements ActionListener {
res= String.valueOf(num3);
result.setText(res);
}
+ //根据运算符判断需要执行的加、减、乘、除
if(operator==1) {
num3=plus(num1,num2);
expression.setText(num1+"+"+num2+"=");
@@ -326,12 +389,18 @@ public class Calculator extends JFrame implements ActionListener {
operator=0;
}
if(operator==4){
- num3=division(num1,num2);
- expression.setText(num1+"÷"+num2+"=");
- res= String.valueOf(num3);
- result.setText(res);
- operate=0;
- operator=0;
+ if(num2!=0) {
+ num3 = division(num1, num2);
+ expression.setText(num1 + "÷" + num2 + "=");
+ res = String.valueOf(num3);
+ result.setText(res);
+ operate = 0;
+ operator = 0;
+ }
+ else{
+ JOptionPane.showMessageDialog(this, "除数不能为0!请重新输入除数。", "数学错误", JOptionPane.ERROR_MESSAGE);
+ result.setText("");
+ }
}
}
}
--
Gitee
From c04efe0679d64abfb647d6e57b6f91d5d1bd84f4 Mon Sep 17 00:00:00 2001
From: xuetao <531074036@qq.com>
Date: Sun, 29 May 2022 00:00:37 +0800
Subject: [PATCH 11/21] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E4=B8=80?=
=?UTF-8?q?=E4=BA=9B=E6=B3=A8=E9=87=8A=E3=80=82=E5=A2=9E=E5=8A=A0=E4=BA=86?=
=?UTF-8?q?=E5=B9=B3=E6=96=B9=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=AE=8C=E5=96=84?=
=?UTF-8?q?=E4=BA=86=E7=AE=97=E6=9C=AF=E5=B9=B3=E6=96=B9=E6=A0=B9=E7=9A=84?=
=?UTF-8?q?=E5=8A=9F=E8=83=BD=EF=BC=8C=E4=BD=BF=E4=B9=8B=E8=83=BD=E5=A4=9F?=
=?UTF-8?q?=E6=9B=B4=E5=A5=BD=E5=9C=B0=E5=B1=95=E7=A4=BA=E5=AF=B9=E5=BA=94?=
=?UTF-8?q?=E7=9A=84=E8=BF=90=E7=AE=97=E5=BC=8F=E5=92=8C=E7=BB=93=E6=9E=9C?=
=?UTF-8?q?=E3=80=82=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=B8=80=E4=BA=9B=E6=83=85?=
=?UTF-8?q?=E5=86=B5=E4=B8=8B=E5=8F=AF=E8=83=BD=E5=AF=BC=E8=87=B4=E7=9A=84?=
=?UTF-8?q?bug=EF=BC=8C=E4=BE=8B=E5=A6=82=E5=9C=A8=E8=BE=93=E5=85=A5?=
=?UTF-8?q?=E6=95=B0=E5=AD=97=E5=92=8C=E8=BF=90=E7=AE=97=E7=AC=A6=E5=90=8E?=
=?UTF-8?q?=E6=88=96=E8=80=85=E5=8F=AA=E8=BE=93=E5=85=A5=E4=BA=86=E7=AC=AC?=
=?UTF-8?q?=E4=B8=80=E4=B8=AA=E6=93=8D=E4=BD=9C=E6=95=B0=E6=97=B6=EF=BC=8C?=
=?UTF-8?q?=E7=9B=B4=E6=8E=A5=E8=BE=93=E5=85=A5=E7=AD=89=E4=BA=8E=E5=8F=B7?=
=?UTF-8?q?=E7=9A=84=E8=A1=A8=E7=8E=B0=E5=BC=82=E5=B8=B8=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/java2022spring/Calculator.java | 74 ++++++++++++++++++++++++------
1 file changed, 59 insertions(+), 15 deletions(-)
diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java
index 30e5daf..e3ea845 100644
--- a/src/java2022spring/Calculator.java
+++ b/src/java2022spring/Calculator.java
@@ -4,7 +4,7 @@ import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Objects;
-
+import static java.lang.Math.pow;
import static java.lang.Math.sqrt;
public class Calculator extends JFrame implements ActionListener {
@@ -76,9 +76,10 @@ public class Calculator extends JFrame implements ActionListener {
//点击后在文本框显示数字
if (str.equals("1") || str.equals("2") || str.equals("3") || str.equals("4") || str.equals("5") || str.equals("6") || str.equals("7") || str.equals("8") || str.equals("9") || str.equals("0")) {
res = result.getText();
- if (!mix) {//判断是否为重新输入的数字
+ if (!mix&&!Objects.equals(res,"0")) {//判断是否为重新输入的数字
result.setText(res + str);//不是则放在前数的后面
- } else {
+ }
+ else {
result.setText(str);//是则将数字放入文本框
mix = false;//并将判断符改为false,后续输入数字都会放置在原文本框的数后面
}
@@ -123,27 +124,68 @@ public class Calculator extends JFrame implements ActionListener {
JOptionPane.showMessageDialog(this,"请先输入需要算数平方根的数。","提示",JOptionPane.INFORMATION_MESSAGE);
}
try {
- //表达式框为空,则直接运算
+ //表达式框为空,则直接将结果框的数进行算数平方根运算
if (Objects.equals(expression.getText(), "") && Double.parseDouble(result.getText()) > 0) {
num3 = sqrt(Double.parseDouble(result.getText()));
expression.setText("sqrt(" + result.getText() + ")=");
result.setText(String.valueOf(num3));
}
- //表达式不为空,则只将结果框的数进行算数平方根运算
+ //表达式不为空
else if (!Objects.equals(expression.getText(), "") && Double.parseDouble(result.getText()) > 0) {
- double temp;
- temp = sqrt(Double.parseDouble(result.getText()));
- result.setText(String.valueOf(temp));
- } else if (Double.parseDouble(result.getText()) < 0) {
+ if(!(expression.getText()).contains("=")){
+ //表达式框没有等于号的时候,运算结果框数字的算数平方根
+ double temp;
+ temp = sqrt(Double.parseDouble(result.getText()));
+ result.setText(String.valueOf(temp));}
+ else {
+ //表达式框有等于号的时候,运算结果框的数字的算术平方根并展示
+ num3 = sqrt(Double.parseDouble(result.getText()));
+ expression.setText("√"+result.getText()+"=");
+ result.setText(String.valueOf(num3));
+ }
+ }
+ //如果用户键入了负数,则提示负数不能进行平方根
+ else if (Double.parseDouble(result.getText()) < 0) {
JOptionPane.showMessageDialog(this, "负数的算数平方根不存在。", "数学错误", JOptionPane.ERROR_MESSAGE);
+ result.setText("0");
}
}
catch (NumberFormatException exp){}
+ }
+ //平方(²)的功能
+ if(str.equals("²")){
+ try {
+ //表达式框为空,则直接将结果框的数平方并展示
+ if (Objects.equals(expression.getText(), "") ) {
+ num3 = pow(Double.parseDouble(result.getText()), 2);
+ expression.setText(result.getText()+"²=");
+ result.setText(String.valueOf(num3));
+ }
+ //表达式不为空
+ else if (!Objects.equals(expression.getText(), "") ) {
+ if(!(expression.getText()).contains("=")){
+ //表达式框没有等于号的时候,只将结果框的数字平方
+ double temp;
+ temp = pow(Double.parseDouble(result.getText()),2);
+ result.setText(String.valueOf(temp));}
+ else {
+ //表达式框有等于号的时候,将结果框的数字进行平方并展示
+ num3 = pow(Double.parseDouble(result.getText()), 2);
+ expression.setText(result.getText()+"²=");
+ result.setText(String.valueOf(num3));
+ }
+ }
+ }
+ catch (NumberFormatException exp){}
+ }
+ //求倒数
+ if(str.equals("1/x")){
+
}
//C和CE功能
if (str.equals("CE")) {
//清空当前输入的数字
- result.setText("");
+ result.setText("0");
num2 = 0;
mix = true;
}
@@ -206,7 +248,7 @@ public class Calculator extends JFrame implements ActionListener {
if(num2!=0){num3 = division(num1, num2);num1 = num3;expression.setText(num1 + "+"); operator = 1;}
else {
JOptionPane.showMessageDialog(this, "除数不能为0!请重新输入。", "数学错误", JOptionPane.ERROR_MESSAGE);
- result.setText("");
+ result.setText("0");
}
}
}
@@ -243,7 +285,7 @@ public class Calculator extends JFrame implements ActionListener {
if(num2!=0){num3 = division(num1, num2);num1 = num3;expression.setText(num1 + "-"); operator = 2;}
else {
JOptionPane.showMessageDialog(this, "除数不能为0!请重新输入除数。", "数学错误", JOptionPane.ERROR_MESSAGE);
- result.setText("");
+ result.setText("0");
}
}
}
@@ -282,7 +324,7 @@ public class Calculator extends JFrame implements ActionListener {
if(num2!=0){num3 = division(num1, num2);num1 = num3;expression.setText(num1 + "×"); operator = 3;}
else {
JOptionPane.showMessageDialog(this, "除数不能为0!请重新输入除数。", "数学错误", JOptionPane.ERROR_MESSAGE);
- result.setText("");
+ result.setText("0");
}
}
}
@@ -340,7 +382,7 @@ public class Calculator extends JFrame implements ActionListener {
//增加除数为零时的提示
else if (operate == 1&&Double.parseDouble(result.getText())==0) {
JOptionPane.showMessageDialog(this, "除数不能为0!请重新输入除数。", "数学错误", JOptionPane.ERROR_MESSAGE);
- result.setText("");
+ result.setText("0");
}
}
catch (NumberFormatException exp){}
@@ -357,6 +399,8 @@ public class Calculator extends JFrame implements ActionListener {
res=String.valueOf(num1);
expression.setText("");
result.setText(res);
+ operator=0;
+ operate=0;
}
//运算符已经清除,但仍然留有表达式
if(operator==0&&!Objects.equals(expression.getText(), "")){
@@ -399,7 +443,7 @@ public class Calculator extends JFrame implements ActionListener {
}
else{
JOptionPane.showMessageDialog(this, "除数不能为0!请重新输入除数。", "数学错误", JOptionPane.ERROR_MESSAGE);
- result.setText("");
+ result.setText("0");
}
}
}
--
Gitee
From f45d1000a5f5534e392116b75e361d66e93aa70d Mon Sep 17 00:00:00 2001
From: xuetao <531074036@qq.com>
Date: Mon, 30 May 2022 22:21:20 +0800
Subject: [PATCH 12/21] =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=86=E4=B8=80?=
=?UTF-8?q?=E4=BA=9B=E9=80=BB=E8=BE=91=EF=BC=8C=E4=BF=AE=E6=AD=A3=E4=BA=86?=
=?UTF-8?q?=E4=B8=80=E4=BA=9Bbug=EF=BC=9A=E6=9F=90=E4=BA=9B=E6=83=85?=
=?UTF-8?q?=E5=86=B5=E4=B8=8B=E9=80=80=E6=A0=BC=E9=94=AE=E5=90=8E=E5=AF=BC?=
=?UTF-8?q?=E8=87=B4=E6=95=B0=E5=AD=97=E8=BE=93=E5=85=A5=E4=BC=9A=E8=A6=86?=
=?UTF-8?q?=E7=9B=96=E6=8E=89=E9=80=80=E6=A0=BC=E4=B9=8B=E5=90=8E=E7=95=99?=
=?UTF-8?q?=E4=B8=8B=E7=9A=84=E6=95=B0=E3=80=82=20=E5=AE=8C=E6=88=90?=
=?UTF-8?q?=E4=BA=86=E5=80=92=E6=95=B0=E5=8A=9F=E8=83=BD=EF=BC=8C=E5=B9=B6?=
=?UTF-8?q?=E9=92=88=E5=AF=B9=E5=90=84=E7=A7=8D=E6=83=85=E5=86=B5=E8=BF=9B?=
=?UTF-8?q?=E8=A1=8C=E4=BA=86=E9=80=82=E9=85=8D=E3=80=82=20=E7=8E=B0?=
=?UTF-8?q?=E5=9C=A8=E7=94=A8=E6=88=B7=E7=9A=84=E8=BE=93=E5=85=A5=E4=B8=8D?=
=?UTF-8?q?=E7=AC=A6=E5=90=88=E6=95=B0=E5=AD=A6=E8=BF=90=E7=AE=97=E8=A7=84?=
=?UTF-8?q?=E5=88=99=E7=9A=84=E6=97=B6=E5=80=99=EF=BC=8C=E4=BC=9A=E6=94=B6?=
=?UTF-8?q?=E5=88=B0=E9=94=99=E8=AF=AF=E6=8F=90=E7=A4=BA=E3=80=82=20?=
=?UTF-8?q?=E7=8E=B0=E5=9C=A8=E7=94=A8=E6=88=B7=E8=BE=93=E5=85=A5=E6=9F=90?=
=?UTF-8?q?=E4=BA=9B=E9=9C=80=E8=A6=81=E5=80=BC=E7=9A=84=E6=93=8D=E4=BD=9C?=
=?UTF-8?q?=E7=AC=A6=E6=97=B6=EF=BC=8C=E5=A6=82=E6=9E=9C=E6=9C=AA=E8=BE=93?=
=?UTF-8?q?=E5=85=A5=E8=BF=99=E4=BA=9B=E5=BF=85=E8=A6=81=E7=9A=84=E5=80=BC?=
=?UTF-8?q?=EF=BC=8C=E4=BC=9A=E6=94=B6=E5=88=B0=E6=8F=90=E7=A4=BA=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/java2022spring/Calculator.java | 93 ++++++++++++++++++++++++------
1 file changed, 75 insertions(+), 18 deletions(-)
diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java
index e3ea845..cfa9d99 100644
--- a/src/java2022spring/Calculator.java
+++ b/src/java2022spring/Calculator.java
@@ -108,14 +108,22 @@ public class Calculator extends JFrame implements ActionListener {
result.setText(String.valueOf(change));
}
}
- catch (NumberFormatException exp){}
+ catch (NumberFormatException exp){
+ JOptionPane.showMessageDialog(this,"当你看到这一提示,请保证下方的文本框包含数字。","提示",JOptionPane.INFORMATION_MESSAGE);
+ }
}
//百分号%,用户点击后会将结果框的数字除以100,如果数字为0则无变化
if(str.equals("%")){
- if(Double.parseDouble(result.getText())!=0){
- double temp;
- temp= Double.parseDouble(result.getText())/100;
- result.setText(String.valueOf(temp));}
+ try {
+ if (Double.parseDouble(result.getText()) != 0) {
+ double temp;
+ temp = Double.parseDouble(result.getText()) / 100;
+ result.setText(String.valueOf(temp));
+ }
+ }
+ catch (NumberFormatException exp){
+ JOptionPane.showMessageDialog(this,"当你看到这一提示,请保证下方的文本框包含数字。","提示",JOptionPane.INFORMATION_MESSAGE);
+ }
}
//根号
if(str.equals("√")){
@@ -150,7 +158,8 @@ public class Calculator extends JFrame implements ActionListener {
result.setText("0");
}
}
- catch (NumberFormatException exp){}
+ catch (NumberFormatException exp){
+ JOptionPane.showMessageDialog(this,"当你看到这一提示,请保证下方的文本框包含数字。","提示",JOptionPane.INFORMATION_MESSAGE);}
}
//平方(²)的功能
if(str.equals("²")){
@@ -176,11 +185,39 @@ public class Calculator extends JFrame implements ActionListener {
}
}
}
- catch (NumberFormatException exp){}
+ catch (NumberFormatException exp){
+ JOptionPane.showMessageDialog(this,"当你看到这一提示,请保证下方的文本框包含数字。","提示",JOptionPane.INFORMATION_MESSAGE);
+ }
}
- //求倒数
- if(str.equals("1/x")){
-
+ //求倒数(功能为将结果框的数变为倒数)
+ if(str.equals("1/x")) {
+ //表达式框为空时
+ res = result.getText();
+ try {
+ if (Objects.equals(expression.getText(), "")) {
+ handleReciprocal();
+ }
+ //不为空时
+ else {
+ //已经有运算式了,直接运算结果框数字的倒数并展示
+ if (expression.getText().contains("=")) {
+ handleReciprocal();
+ }
+ //没有运算式,则改变结果框的数字为原来的倒数
+ else {
+ if(Double.parseDouble(res)!=0){
+ double temp = 1 / Double.parseDouble(res);
+ result.setText(String.valueOf(temp));
+ }
+ else {
+ JOptionPane.showMessageDialog(this, "倒数:分母不能为0!请重新输入。", "数学错误", JOptionPane.ERROR_MESSAGE);
+ }
+ }
+ }
+ }
+ catch (NumberFormatException exp){
+ JOptionPane.showMessageDialog(this,"当你看到这一提示,请保证下方的文本框包含数字。","提示",JOptionPane.INFORMATION_MESSAGE);
+ }
}
//C和CE功能
if (str.equals("CE")) {
@@ -216,6 +253,7 @@ public class Calculator extends JFrame implements ActionListener {
operate=0;
result.setText(String.valueOf(num1));
expression.setText("");
+ mix=false;
}
//如果点击后结果框已经被删空了,且表达式框无内容,删除所有操作数,结果框显示0
if(Objects.equals(result.getText(),"")&&Objects.equals(expression.getText(),"")){
@@ -247,7 +285,7 @@ public class Calculator extends JFrame implements ActionListener {
if(operator==4) {
if(num2!=0){num3 = division(num1, num2);num1 = num3;expression.setText(num1 + "+"); operator = 1;}
else {
- JOptionPane.showMessageDialog(this, "除数不能为0!请重新输入。", "数学错误", JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(this, "除法:除数不能为0!请重新输入。", "数学错误", JOptionPane.ERROR_MESSAGE);
result.setText("0");
}
}
@@ -267,7 +305,9 @@ public class Calculator extends JFrame implements ActionListener {
num1 = num3;
}
}
- catch (NumberFormatException exp){}
+ catch (NumberFormatException exp){
+ JOptionPane.showMessageDialog(this,"当你看到这一提示,请保证下方的文本框包含数字。","提示",JOptionPane.INFORMATION_MESSAGE);
+ }
}
if (str.equals("-")) {
mix = true;
@@ -284,7 +324,7 @@ public class Calculator extends JFrame implements ActionListener {
if(operator==4) {
if(num2!=0){num3 = division(num1, num2);num1 = num3;expression.setText(num1 + "-"); operator = 2;}
else {
- JOptionPane.showMessageDialog(this, "除数不能为0!请重新输入除数。", "数学错误", JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(this, "除法:除数不能为0!请重新输入除数。", "数学错误", JOptionPane.ERROR_MESSAGE);
result.setText("0");
}
}
@@ -304,6 +344,7 @@ public class Calculator extends JFrame implements ActionListener {
num1 = num3;
}
} catch (NumberFormatException exp1) {
+ JOptionPane.showMessageDialog(this,"当你看到这一提示,请保证下方的文本框包含数字。","提示",JOptionPane.INFORMATION_MESSAGE);
}
}
if (str.equals("×")) {
@@ -323,7 +364,7 @@ public class Calculator extends JFrame implements ActionListener {
if(operator==4) {
if(num2!=0){num3 = division(num1, num2);num1 = num3;expression.setText(num1 + "×"); operator = 3;}
else {
- JOptionPane.showMessageDialog(this, "除数不能为0!请重新输入除数。", "数学错误", JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(this, "除法:除数不能为0!请重新输入除数。", "数学错误", JOptionPane.ERROR_MESSAGE);
result.setText("0");
}
}
@@ -343,7 +384,9 @@ public class Calculator extends JFrame implements ActionListener {
num1 = num3;
}
}
- catch (NumberFormatException exp){}
+ catch (NumberFormatException exp){
+ JOptionPane.showMessageDialog(this,"当你看到这一提示,请保证下方的文本框包含数字。","提示",JOptionPane.INFORMATION_MESSAGE);
+ }
}
if (str.equals("÷")) {
mix = true;
@@ -381,11 +424,13 @@ public class Calculator extends JFrame implements ActionListener {
}
//增加除数为零时的提示
else if (operate == 1&&Double.parseDouble(result.getText())==0) {
- JOptionPane.showMessageDialog(this, "除数不能为0!请重新输入除数。", "数学错误", JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(this, "除法:除数不能为0!请重新输入除数。", "数学错误", JOptionPane.ERROR_MESSAGE);
result.setText("0");
}
}
- catch (NumberFormatException exp){}
+ catch (NumberFormatException exp){
+ JOptionPane.showMessageDialog(this,"当你看到这一提示,请保证下方的文本框包含数字。","提示",JOptionPane.INFORMATION_MESSAGE);
+ }
}
//等于后的操作
if(str.equals("=")){
@@ -442,12 +487,24 @@ public class Calculator extends JFrame implements ActionListener {
operator = 0;
}
else{
- JOptionPane.showMessageDialog(this, "除数不能为0!请重新输入除数。", "数学错误", JOptionPane.ERROR_MESSAGE);
+ JOptionPane.showMessageDialog(this, "除法:除数不能为0!请重新输入除数。", "数学错误", JOptionPane.ERROR_MESSAGE);
result.setText("0");
}
}
}
}
+ //处理倒数
+ private void handleReciprocal() {
+ if(Double.parseDouble(res)!=0)
+ {
+ double temp = 1 / Double.parseDouble(res);
+ result.setText(String.valueOf(temp));
+ expression.setText("1/" + res);
+ }
+ else{
+ JOptionPane.showMessageDialog(this, "倒数:分母不能为0!请重新输入。", "数学错误", JOptionPane.ERROR_MESSAGE);
+ }
+ }
//加法
private double plus (double num1, double num2){
double result;
--
Gitee
From 7167e18bde64c691d8a1dca6842d873bb3e9f837 Mon Sep 17 00:00:00 2001
From: xuetao <531074036@qq.com>
Date: Wed, 1 Jun 2022 14:26:49 +0800
Subject: [PATCH 13/21] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E4=B8=80?=
=?UTF-8?q?=E4=B8=AAbug=EF=BC=9A=E8=BE=93=E5=85=A5=E7=AD=89=E4=BA=8E?=
=?UTF-8?q?=E5=AE=8C=E6=88=90=E8=BF=90=E7=AE=97=E5=90=8E=EF=BC=8C=E6=96=B0?=
=?UTF-8?q?=E8=BE=93=E5=85=A5=E7=9A=84=E6=95=B0=E5=AD=97=E8=A2=AB=E6=94=BE?=
=?UTF-8?q?=E5=9C=A8=E7=BB=93=E6=9E=9C=E5=90=8E=E9=9D=A2=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/java2022spring/Calculator.java | 1 +
1 file changed, 1 insertion(+)
diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java
index cfa9d99..689de7a 100644
--- a/src/java2022spring/Calculator.java
+++ b/src/java2022spring/Calculator.java
@@ -434,6 +434,7 @@ public class Calculator extends JFrame implements ActionListener {
}
//等于后的操作
if(str.equals("=")){
+ mix=true;
//结果框已输入,且具有运算符,先获取第二个数
if(!Objects.equals(result.getText(), "")&&operate==1&&!Objects.equals(expression.getText(), ""))
{
--
Gitee
From 468947b4f2916ea6392295c29e29986afcad0797 Mon Sep 17 00:00:00 2001
From: Xt Lee <531074036@qq.com>
Date: Wed, 1 Jun 2022 13:11:45 +0000
Subject: [PATCH 14/21] =?UTF-8?q?add=20README.md.=20=E7=AE=80=E5=8D=95?=
=?UTF-8?q?=E5=86=99=E4=BA=86=E4=B8=80=E4=B8=AA=E5=B8=AE=E5=8A=A9=EF=BC=8C?=
=?UTF-8?q?=E5=90=8E=E7=BB=AD=E4=BC=9A=E7=BB=A7=E7=BB=AD=E5=AE=8C=E5=96=84?=
=?UTF-8?q?=E5=86=85=E5=AE=B9=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
create mode 100644 README.md
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..e5ed2c0
--- /dev/null
+++ b/README.md
@@ -0,0 +1,17 @@
+# 帮助
+欢迎使用本计算器,本计算器为开源项目,全程序基于JAVA实现。
为了便于说明,我们将运算区分为两侧,上侧显示表达式(即运算过程),下侧是结果框(也用于暂时展示用户输入的数字)。
+
+## 1. 基础运算功能
+主要包括加减乘除四则运算,支持连续的混合四则运算,但水平有限,在未输入等于的情况下,直接按下下一个运算符会计算上一步的结果并显示(这使得在某些情况下不符合先乘除再加减的连续混合运算规则,实际上是分步隔离计算)。不过,Windows 10的标准模式计算器也会有这个问题。
请注意,在进行除法运算时,除数为零将触发错误提示。
+## 2. 其他运算操作
+包括百分号(%)、算术平方根(√)、平方(²)、倒数(1/x)、相反数(±)。
+百分号:会将结果框中的数字转换为百分之几对应的小数(如80→0.08),在输入时,请保证先输入了一个数字,否则将触发提示。
+算数平方根:会将结果框的数字进行开平方根运算,众所周知,负数的算数平方根不存在,因此如果结果框为负数,将触发错误提示。
+平方:会将结果框的数字进行平方运算。
+倒数:会将结果框的数字进行倒数运算,因为0不能作为分母,因此如果结果框是0,将触发错误提示。
+相反数:会将结果框的的数字转换为相反数,但如果结果框为0,则不会发生变化。
+## 3. 功能按键
+包括C、CE、退格键(←)。
+C:按下后将清除所有已输入的数字,清空运算区。
+CE:按下后将清除当前在结果框输入的数。
+退格键:按下后会从结果框开始逐个删除数字、小数点等,删空后,可以继续删除运算符和第一个运算数,在已经按下等于号并且有运算结果时,将跳过第二个运算数,直接删除运算符。
\ No newline at end of file
--
Gitee
From be5b2669b449df84c2ec7ae3a138bde671d306d0 Mon Sep 17 00:00:00 2001
From: Xt Lee <531074036@qq.com>
Date: Wed, 1 Jun 2022 13:18:21 +0000
Subject: [PATCH 15/21] =?UTF-8?q?Fix=20Markdown=20Bug=20README.md.=20?=
=?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BA=86=E7=89=88=E5=BC=8F=EF=BC=88Markdown?=
=?UTF-8?q?=EF=BC=89=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
README.md | 23 ++++++++++++-----------
1 file changed, 12 insertions(+), 11 deletions(-)
diff --git a/README.md b/README.md
index e5ed2c0..495ec59 100644
--- a/README.md
+++ b/README.md
@@ -2,16 +2,17 @@
欢迎使用本计算器,本计算器为开源项目,全程序基于JAVA实现。
为了便于说明,我们将运算区分为两侧,上侧显示表达式(即运算过程),下侧是结果框(也用于暂时展示用户输入的数字)。

## 1. 基础运算功能
-主要包括加减乘除四则运算,支持连续的混合四则运算,但水平有限,在未输入等于的情况下,直接按下下一个运算符会计算上一步的结果并显示(这使得在某些情况下不符合先乘除再加减的连续混合运算规则,实际上是分步隔离计算)。不过,Windows 10的标准模式计算器也会有这个问题。
请注意,在进行除法运算时,除数为零将触发错误提示。
+主要包括加减乘除四则运算,支持连续的混合四则运算,但水平有限,在未输入等于的情况下,直接按下下一个运算符会计算上一步的结果并显示(这使得在某些情况下不符合先乘除再加减的连续混合运算规则,实际上是分步隔离计算)。
+不过,Windows 10的标准模式计算器也会有这个问题。
请注意,在进行除法运算时,除数为零将触发错误提示。
## 2. 其他运算操作
-包括百分号(%)、算术平方根(√)、平方(²)、倒数(1/x)、相反数(±)。
-百分号:会将结果框中的数字转换为百分之几对应的小数(如80→0.08),在输入时,请保证先输入了一个数字,否则将触发提示。
-算数平方根:会将结果框的数字进行开平方根运算,众所周知,负数的算数平方根不存在,因此如果结果框为负数,将触发错误提示。
-平方:会将结果框的数字进行平方运算。
-倒数:会将结果框的数字进行倒数运算,因为0不能作为分母,因此如果结果框是0,将触发错误提示。
-相反数:会将结果框的的数字转换为相反数,但如果结果框为0,则不会发生变化。
+包括百分号(%)、算术平方根(√)、平方(²)、倒数(1/x)、相反数(±)。
+百分号:会将结果框中的数字转换为百分之几对应的小数(如80→0.08),在输入时,请保证先输入了一个数字,否则将触发提示。
+算数平方根:会将结果框的数字进行开平方根运算,众所周知,负数的算数平方根不存在,因此如果结果框为负数,将触发错误提示。
+平方:会将结果框的数字进行平方运算。
+倒数:会将结果框的数字进行倒数运算,因为0不能作为分母,因此如果结果框是0,将触发错误提示。
+相反数:会将结果框的的数字转换为相反数,但如果结果框为0,则不会发生变化。
## 3. 功能按键
-包括C、CE、退格键(←)。
-C:按下后将清除所有已输入的数字,清空运算区。
-CE:按下后将清除当前在结果框输入的数。
-退格键:按下后会从结果框开始逐个删除数字、小数点等,删空后,可以继续删除运算符和第一个运算数,在已经按下等于号并且有运算结果时,将跳过第二个运算数,直接删除运算符。
\ No newline at end of file
+包括C、CE、退格键(←)。
+C:按下后将清除所有已输入的数字,清空运算区。
+CE:按下后将清除当前在结果框输入的数。
+退格键:按下后会从结果框开始逐个删除数字、小数点等,删空后,可以继续删除运算符和第一个运算数,在已经按下等于号并且有运算结果时,将跳过第二个运算数,直接删除运算符。
\ No newline at end of file
--
Gitee
From 1e4f1a899e821c9344588af9e3e1816387afa8aa Mon Sep 17 00:00:00 2001
From: xuetao <531074036@qq.com>
Date: Wed, 1 Jun 2022 22:10:27 +0800
Subject: [PATCH 16/21] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BA=86=E4=B8=80?=
=?UTF-8?q?=E9=83=A8=E5=88=86=E7=9A=84=E8=8F=9C=E5=8D=95=E6=A0=8F=E5=8A=9F?=
=?UTF-8?q?=E8=83=BD=EF=BC=8C=E4=BF=AE=E6=AD=A3=E4=BA=86=E4=B8=80=E4=BA=9B?=
=?UTF-8?q?bug=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/java2022spring/Calculator.java | 38 +++++++++++++++++++++++++++---
1 file changed, 35 insertions(+), 3 deletions(-)
diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java
index 689de7a..41f2756 100644
--- a/src/java2022spring/Calculator.java
+++ b/src/java2022spring/Calculator.java
@@ -20,6 +20,9 @@ public class Calculator extends JFrame implements ActionListener {
//菜单选项
JMenuBar menus = new JMenuBar();
JMenu menu1 = new JMenu("菜单");
+ String[] str_menuItems= {"帮助","关于","退出","复制结果","粘贴","清空所有"};
+ JMenu menu2=new JMenu("编辑");
+ JMenuItem[] menuItems=new JMenuItem[6];
//按钮
JButton[] buttons = new JButton[24];
String[] keys = {"%", "√", "²", "1/x", "CE", "C", "←", "÷", "7", "8", "9", "×", "4", "5", "6", "-", "1", "2", "3", "+", "±", "0", ".", "="};
@@ -51,9 +54,20 @@ public class Calculator extends JFrame implements ActionListener {
add(expression, g);
g.gridy = 2;
add(result, g);
- //添加菜单
+ //添加菜单(及其监听器)
menus.add(menu1);
+ menus.add(menu2);
setJMenuBar(menus);
+ for (int i = 0; i < 3; i++) {
+ menuItems[i]=new JMenuItem(str_menuItems[i]);
+ menuItems[i].addActionListener(this);
+ menu1.add(menuItems[i]);
+ }
+ for (int i = 3; i < 6; i++) {
+ menuItems[i]=new JMenuItem(str_menuItems[i]);
+ menuItems[i].addActionListener(this);
+ menu2.add(menuItems[i]);
+ }
//添加按钮(设置组件宽高均为1)
g.gridwidth = 1;
g.gridheight = 1;
@@ -219,14 +233,14 @@ public class Calculator extends JFrame implements ActionListener {
JOptionPane.showMessageDialog(this,"当你看到这一提示,请保证下方的文本框包含数字。","提示",JOptionPane.INFORMATION_MESSAGE);
}
}
- //C和CE功能
+ //C和CE功能,菜单的清除所有功能
if (str.equals("CE")) {
//清空当前输入的数字
result.setText("0");
num2 = 0;
mix = true;
}
- if (str.equals("C")) {
+ if (str.equals("C")||e.getSource()==menuItems[5]) {
//清空所有
expression.setText("");
result.setText("0");
@@ -493,6 +507,22 @@ public class Calculator extends JFrame implements ActionListener {
}
}
}
+ //菜单1(帮助)
+ if(e.getSource()==menuItems[0]){
+
+ }
+ //菜单2(关于)
+ if(e.getSource()==menuItems[1]){
+ JOptionPane.showMessageDialog(this, "作者:XT Lee\n参考了一部分往届师兄师姐代码的写法,并根据自己的理解对内部算法加以改进,修正bug。\n学号:202125710113\n班级:信息管理与信息系统1班\n版本:v1.0 beta", "关于", JOptionPane.INFORMATION_MESSAGE);
+ }
+ //菜单3(退出)
+ if(e.getSource()==menuItems[2]){
+ System.exit(0);
+ }
+ //编辑1(复制结果)
+
+ //编辑2(粘贴)
+
}
//处理倒数
private void handleReciprocal() {
@@ -530,4 +560,6 @@ public class Calculator extends JFrame implements ActionListener {
result = num1 / num2;
return result;
}
+
}
+
--
Gitee
From ab1ab919fec6e875bed8f4a9c9c78d1b86778459 Mon Sep 17 00:00:00 2001
From: xuetao <531074036@qq.com>
Date: Thu, 2 Jun 2022 23:39:14 +0800
Subject: [PATCH 17/21] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E5=B8=AE?=
=?UTF-8?q?=E5=8A=A9=E5=8A=9F=E8=83=BD=EF=BC=8C=E9=A1=B9=E7=9B=AE=E5=9F=BA?=
=?UTF-8?q?=E6=9C=AC=E5=8A=9F=E8=83=BD=E5=B7=B2=E5=AE=8C=E6=88=90=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/java2022spring/Calculator.java | 22 ++++++-----------
src/java2022spring/Help.java | 39 ++++++++++++++++++++++++++++++
2 files changed, 47 insertions(+), 14 deletions(-)
create mode 100644 src/java2022spring/Help.java
diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java
index 41f2756..04ac2cc 100644
--- a/src/java2022spring/Calculator.java
+++ b/src/java2022spring/Calculator.java
@@ -20,9 +20,9 @@ public class Calculator extends JFrame implements ActionListener {
//菜单选项
JMenuBar menus = new JMenuBar();
JMenu menu1 = new JMenu("菜单");
- String[] str_menuItems= {"帮助","关于","退出","复制结果","粘贴","清空所有"};
+ String[] str_menuItems= {"帮助","关于","退出","清空所有"};
JMenu menu2=new JMenu("编辑");
- JMenuItem[] menuItems=new JMenuItem[6];
+ JMenuItem[] menuItems=new JMenuItem[4];
//按钮
JButton[] buttons = new JButton[24];
String[] keys = {"%", "√", "²", "1/x", "CE", "C", "←", "÷", "7", "8", "9", "×", "4", "5", "6", "-", "1", "2", "3", "+", "±", "0", ".", "="};
@@ -63,11 +63,9 @@ public class Calculator extends JFrame implements ActionListener {
menuItems[i].addActionListener(this);
menu1.add(menuItems[i]);
}
- for (int i = 3; i < 6; i++) {
- menuItems[i]=new JMenuItem(str_menuItems[i]);
- menuItems[i].addActionListener(this);
- menu2.add(menuItems[i]);
- }
+ menuItems[3]=new JMenuItem(str_menuItems[3]);
+ menuItems[3].addActionListener(this);
+ menu2.add(menuItems[3]);
//添加按钮(设置组件宽高均为1)
g.gridwidth = 1;
g.gridheight = 1;
@@ -240,7 +238,7 @@ public class Calculator extends JFrame implements ActionListener {
num2 = 0;
mix = true;
}
- if (str.equals("C")||e.getSource()==menuItems[5]) {
+ if (str.equals("C")||e.getSource()==menuItems[3]) {
//清空所有
expression.setText("");
result.setText("0");
@@ -509,20 +507,16 @@ public class Calculator extends JFrame implements ActionListener {
}
//菜单1(帮助)
if(e.getSource()==menuItems[0]){
-
+ Help.help();
}
//菜单2(关于)
if(e.getSource()==menuItems[1]){
- JOptionPane.showMessageDialog(this, "作者:XT Lee\n参考了一部分往届师兄师姐代码的写法,并根据自己的理解对内部算法加以改进,修正bug。\n学号:202125710113\n班级:信息管理与信息系统1班\n版本:v1.0 beta", "关于", JOptionPane.INFORMATION_MESSAGE);
+ JOptionPane.showMessageDialog(this, "作者:XT Lee\n参考了一部分往届师兄师姐代码的写法,并根据自己的理解对内部算法加以改进,修正bug。\n学号:202125710113\n班级:信息管理与信息系统1班\n版本:v1.1 beta", "关于", JOptionPane.INFORMATION_MESSAGE);
}
//菜单3(退出)
if(e.getSource()==menuItems[2]){
System.exit(0);
}
- //编辑1(复制结果)
-
- //编辑2(粘贴)
-
}
//处理倒数
private void handleReciprocal() {
diff --git a/src/java2022spring/Help.java b/src/java2022spring/Help.java
new file mode 100644
index 0000000..1ba036c
--- /dev/null
+++ b/src/java2022spring/Help.java
@@ -0,0 +1,39 @@
+package java2022spring;
+
+import javax.swing.*;
+import java.awt.*;
+
+public class Help extends JFrame {
+ public static void help() {
+ //居中窗口
+ Toolkit kit=Toolkit.getDefaultToolkit();
+ Dimension ScreenSize=kit.getScreenSize();
+ int ScreenWidth=ScreenSize.width;
+ int ScreenHeight=ScreenSize.height;
+ JFrame helpWindow=new JFrame("帮助");
+ helpWindow.setBounds((ScreenWidth - 500) / 2, (ScreenHeight - 500) / 2, 500, 500);
+ JTextArea HelpText=new JTextArea("""
+ 欢迎使用本计算器,本计算器为开源项目,全程序基于JAVA实现。
+ 为了便于说明,我们将运算区分为两侧,上侧显示表达式(即运算过程),下侧是结果框(也用于暂时展示用户输入的数字)。
+ 1. 基础运算功能
+ 主要包括加减乘除四则运算,支持连续的混合四则运算,但水平有限,在未输入等于的情况下,直接按下下一个运算符会计算上一步的结果并显示(这使得在某些情况下不符合先乘除再加减的连续混合运算规则,实际上是分步隔离计算)。
+ 不过,Windows 10的标准模式计算器也会有这个问题。请注意,在进行除法运算时,除数为零将触发错误提示。
+ 2. 其他运算操作
+ 包括百分号(%)、算术平方根(√)、平方(²)、倒数(1/x)、相反数(±)。
+ 百分号:会将结果框中的数字转换为百分之几对应的小数(如80→0.08),在输入时,请保证先输入了一个数字,否则将触发提示。
+ 算数平方根:会将结果框的数字进行开平方根运算,众所周知,负数的算数平方根不存在,因此如果结果框为负数,将触发错误提示。
+ 平方:会将结果框的数字进行平方运算。
+ 倒数:会将结果框的数字进行倒数运算,因为0不能作为分母,因此如果结果框是0,将触发错误提示。
+ 相反数:会将结果框的的数字转换为相反数,但如果结果框为0,则不会发生变化。
+ 3. 功能按键
+ 包括C、CE、退格键(←)。
+ C:按下后将清除所有已输入的数字,清空运算区。
+ CE:按下后将清除当前在结果框输入的数。
+ 退格键:按下后会从结果框开始逐个删除数字、小数点等,删空后,可以继续删除运算符和第一个运算数,在已经按下等于号并且有运算结果时,将跳过第二个运算数,直接删除运算符。""");
+ HelpText.setLineWrap(true);
+ helpWindow.add(HelpText);
+ HelpText.setEditable(false);
+ helpWindow.setVisible(true);
+ helpWindow.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+ }
+}
--
Gitee
From e3a86a5a1a4ca7b448422b61081604303d60f8d5 Mon Sep 17 00:00:00 2001
From: xuetao <531074036@qq.com>
Date: Fri, 3 Jun 2022 10:59:44 +0800
Subject: [PATCH 18/21] =?UTF-8?q?=E8=B0=83=E6=95=B4=E4=BA=86=E7=A8=8B?=
=?UTF-8?q?=E5=BA=8F=E6=8C=89=E9=92=AE=E3=80=81=E6=96=87=E6=9C=AC=E4=BD=BF?=
=?UTF-8?q?=E7=94=A8=E7=9A=84=E5=AD=97=E4=BD=93=E5=A4=A7=E5=B0=8F=E3=80=81?=
=?UTF-8?q?=E6=A0=B7=E5=BC=8F=EF=BC=8C=E5=A2=9E=E5=BC=BA=E8=A7=86=E8=A7=89?=
=?UTF-8?q?=E6=84=9F=E5=8F=97=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/java2022spring/Calculator.java | 9 +++++++--
src/java2022spring/Help.java | 8 ++++++--
2 files changed, 13 insertions(+), 4 deletions(-)
diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java
index 04ac2cc..6cd5271 100644
--- a/src/java2022spring/Calculator.java
+++ b/src/java2022spring/Calculator.java
@@ -15,7 +15,6 @@ public class Calculator extends JFrame implements ActionListener {
JTextField expression = new JTextField();
JTextField result = new JTextField("0");
//文本框字符串初始化
- String exp = "";
String res = "";
//菜单选项
JMenuBar menus = new JMenuBar();
@@ -35,7 +34,10 @@ public class Calculator extends JFrame implements ActionListener {
int operator;
//创建一个boolean变量,用于多位数输入判断
boolean mix = true;
-
+ //创建font对象,用于调整字体大小
+ Font exp_font=new Font("等线",Font.BOLD,24);
+ Font res_font=new Font("等线",Font.BOLD,40);
+ Font bt_font=new Font("等线",Font.BOLD,22);
public Calculator(String s, int x, int y, int w, int h) {
//设置窗口大小和位置
setLayout(all);
@@ -51,6 +53,8 @@ public class Calculator extends JFrame implements ActionListener {
expression.setHorizontalAlignment(JTextField.RIGHT);//居右
result.setEditable(false);
result.setHorizontalAlignment(JTextField.RIGHT);
+ expression.setFont(exp_font);
+ result.setFont(res_font);
add(expression, g);
g.gridy = 2;
add(result, g);
@@ -76,6 +80,7 @@ public class Calculator extends JFrame implements ActionListener {
g.gridx = k;
buttons[4 * j + k] = new JButton(keys[4 * j + k]);
buttons[4 * j + k].addActionListener(this);//顺便添加监听器
+ buttons[4 * j + k].setFont(bt_font);
all.setConstraints(buttons[4 * j + k], g);
add(buttons[4 * j + k], g);
}
diff --git a/src/java2022spring/Help.java b/src/java2022spring/Help.java
index 1ba036c..d41d650 100644
--- a/src/java2022spring/Help.java
+++ b/src/java2022spring/Help.java
@@ -12,6 +12,7 @@ public class Help extends JFrame {
int ScreenHeight=ScreenSize.height;
JFrame helpWindow=new JFrame("帮助");
helpWindow.setBounds((ScreenWidth - 500) / 2, (ScreenHeight - 500) / 2, 500, 500);
+
JTextArea HelpText=new JTextArea("""
欢迎使用本计算器,本计算器为开源项目,全程序基于JAVA实现。
为了便于说明,我们将运算区分为两侧,上侧显示表达式(即运算过程),下侧是结果框(也用于暂时展示用户输入的数字)。
@@ -30,8 +31,11 @@ public class Help extends JFrame {
C:按下后将清除所有已输入的数字,清空运算区。
CE:按下后将清除当前在结果框输入的数。
退格键:按下后会从结果框开始逐个删除数字、小数点等,删空后,可以继续删除运算符和第一个运算数,在已经按下等于号并且有运算结果时,将跳过第二个运算数,直接删除运算符。""");
- HelpText.setLineWrap(true);
- helpWindow.add(HelpText);
+ HelpText.setLineWrap(true);//自动换行
+ Font help_font=new Font("等线",Font.BOLD,15);
+ HelpText.setFont(help_font);
+ JScrollPane Scroll=new JScrollPane(HelpText);
+ helpWindow.add(Scroll);
HelpText.setEditable(false);
helpWindow.setVisible(true);
helpWindow.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
--
Gitee
From 4faacfc3caaaf17584b489110d79aac543362b70 Mon Sep 17 00:00:00 2001
From: xuetao <531074036@qq.com>
Date: Sat, 4 Jun 2022 16:24:26 +0800
Subject: [PATCH 19/21] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E4=B8=80?=
=?UTF-8?q?=E9=83=A8=E5=88=86=E6=8F=8F=E8=BF=B0=EF=BC=8C=E6=9A=82=E5=AE=9A?=
=?UTF-8?q?=E4=BD=9C=E4=B8=BA=E6=9C=80=E7=BB=88=E7=89=88=E6=9C=AC=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/java2022spring/Calculator.java | 2 +-
src/java2022spring/Help.java | 1 -
2 files changed, 1 insertion(+), 2 deletions(-)
diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java
index 6cd5271..2d0ef51 100644
--- a/src/java2022spring/Calculator.java
+++ b/src/java2022spring/Calculator.java
@@ -516,7 +516,7 @@ public class Calculator extends JFrame implements ActionListener {
}
//菜单2(关于)
if(e.getSource()==menuItems[1]){
- JOptionPane.showMessageDialog(this, "作者:XT Lee\n参考了一部分往届师兄师姐代码的写法,并根据自己的理解对内部算法加以改进,修正bug。\n学号:202125710113\n班级:信息管理与信息系统1班\n版本:v1.1 beta", "关于", JOptionPane.INFORMATION_MESSAGE);
+ JOptionPane.showMessageDialog(this, "作者:XT Lee\n参考了部分往届同类其他项目,完善了运算功能。\n学号:202125710113\n班级:信息管理与信息系统1班\n版本:v1.2 Release", "关于", JOptionPane.INFORMATION_MESSAGE);
}
//菜单3(退出)
if(e.getSource()==menuItems[2]){
diff --git a/src/java2022spring/Help.java b/src/java2022spring/Help.java
index d41d650..a813987 100644
--- a/src/java2022spring/Help.java
+++ b/src/java2022spring/Help.java
@@ -12,7 +12,6 @@ public class Help extends JFrame {
int ScreenHeight=ScreenSize.height;
JFrame helpWindow=new JFrame("帮助");
helpWindow.setBounds((ScreenWidth - 500) / 2, (ScreenHeight - 500) / 2, 500, 500);
-
JTextArea HelpText=new JTextArea("""
欢迎使用本计算器,本计算器为开源项目,全程序基于JAVA实现。
为了便于说明,我们将运算区分为两侧,上侧显示表达式(即运算过程),下侧是结果框(也用于暂时展示用户输入的数字)。
--
Gitee
From e67e2592b687939c939b0073a3e9b76950a692e6 Mon Sep 17 00:00:00 2001
From: xuetao <531074036@qq.com>
Date: Mon, 6 Jun 2022 23:17:09 +0800
Subject: [PATCH 20/21] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=86=E4=B8=80?=
=?UTF-8?q?=E4=BA=9B=E6=B3=A8=E9=87=8A=E3=80=82=E8=B0=83=E6=95=B4=E4=BA=86?=
=?UTF-8?q?=E4=B8=80=E4=BA=9B=E4=BB=A3=E7=A0=81=E9=A1=BA=E5=BA=8F=E4=BB=A5?=
=?UTF-8?q?=E4=BE=BF=E6=92=B0=E5=86=99=E5=AE=9E=E9=AA=8C=E6=8A=A5=E5=91=8A?=
=?UTF-8?q?=EF=BC=8C=E5=90=8C=E6=97=B6=E4=BD=9C=E4=B8=BA=E7=BB=88=E7=89=88?=
=?UTF-8?q?Release=E7=9A=84=E6=8F=90=E4=BA=A4=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/java2022spring/Calculator.java | 7 ++++---
src/java2022spring/Help.java | 4 ++--
2 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java
index 2d0ef51..13d3682 100644
--- a/src/java2022spring/Calculator.java
+++ b/src/java2022spring/Calculator.java
@@ -40,15 +40,16 @@ public class Calculator extends JFrame implements ActionListener {
Font bt_font=new Font("等线",Font.BOLD,22);
public Calculator(String s, int x, int y, int w, int h) {
//设置窗口大小和位置
+ setBounds((x - 500) / 2, (y - 500) / 2, w, h);
+ setTitle(s);
+ //布局配置
setLayout(all);
g.weightx = 0.01;
g.weighty = 0.01;
g.fill = GridBagConstraints.BOTH;
+ //设置文本框
g.gridwidth = 4;
g.gridheight = 1;
- setBounds((x - 500) / 2, (y - 500) / 2, w, h);
- setTitle(s);
- //设置文本框
expression.setEditable(false);//不可编辑
expression.setHorizontalAlignment(JTextField.RIGHT);//居右
result.setEditable(false);
diff --git a/src/java2022spring/Help.java b/src/java2022spring/Help.java
index a813987..4ff76be 100644
--- a/src/java2022spring/Help.java
+++ b/src/java2022spring/Help.java
@@ -33,10 +33,10 @@ public class Help extends JFrame {
HelpText.setLineWrap(true);//自动换行
Font help_font=new Font("等线",Font.BOLD,15);
HelpText.setFont(help_font);
- JScrollPane Scroll=new JScrollPane(HelpText);
+ JScrollPane Scroll=new JScrollPane(HelpText);//创建具有滚动条的面板
helpWindow.add(Scroll);
HelpText.setEditable(false);
helpWindow.setVisible(true);
- helpWindow.setDefaultCloseOperation(DISPOSE_ON_CLOSE);
+ helpWindow.setDefaultCloseOperation(DISPOSE_ON_CLOSE);//仅关闭窗体,释放窗体资源
}
}
--
Gitee
From 4b922d9eb118781ca5f5fb28bc38295b332c4cd4 Mon Sep 17 00:00:00 2001
From: xuetao <531074036@qq.com>
Date: Wed, 8 Jun 2022 01:30:24 +0800
Subject: [PATCH 21/21] =?UTF-8?q?=E5=8A=A0=E5=87=8F=E6=B7=B7=E5=90=88?=
=?UTF-8?q?=E8=BF=90=E7=AE=97bug=E4=BF=AE=E6=AD=A3=E3=80=82?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/java2022spring/Calculator.java | 2 ++
1 file changed, 2 insertions(+)
diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java
index 13d3682..04cb354 100644
--- a/src/java2022spring/Calculator.java
+++ b/src/java2022spring/Calculator.java
@@ -335,6 +335,8 @@ public class Calculator extends JFrame implements ActionListener {
operator=2;
}
else if(operator!=2&&operate==1&&!Objects.equals(result.getText(), "")){
+ num2 = Double.parseDouble(result.getText());
+ result.setText("");
switch (operator) {
case 1 -> {num3 = plus(num1, num2);num1=num3;expression.setText(num1 + "-");operator = 2;}
case 3 -> {num3 = multi(num1, num2);num1=num3;expression.setText(num1 + "-");operator = 2;}
--
Gitee