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实现。
为了便于说明,我们将运算区分为两侧,上侧显示表达式(即运算过程),下侧是结果框(也用于暂时展示用户输入的数字)。 +![表达式框和结果框示意](https://images.gitee.com/uploads/images/2022/0601/201315_6c133c6b_10920581.png "01.png") +## 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实现。
为了便于说明,我们将运算区分为两侧,上侧显示表达式(即运算过程),下侧是结果框(也用于暂时展示用户输入的数字)。 ![表达式框和结果框示意](https://images.gitee.com/uploads/images/2022/0601/201315_6c133c6b_10920581.png "01.png") ## 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