From 1470c9e5aa486cf5e5fc92380cf41fe3f130c890 Mon Sep 17 00:00:00 2001 From: 86159 <86159@LAPTOP-EDNSE91R> Date: Tue, 7 Jun 2022 19:36:58 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E8=AE=A1=E7=AE=97=E6=9C=BA=E5=9F=BA?= =?UTF-8?q?=E6=9C=AC=E5=8A=9F=E8=83=BD=E5=B7=B2=E7=BB=8F=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=EF=BC=8C=E5=8F=AA=E6=98=AF=E4=B8=8D=E8=83=BD=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E8=BF=9E=E7=BB=AD=E8=BF=90=E7=AE=97=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Calculator/Calculator.java | 151 +++++++++++++++++++++++++++++++++ src/Calculator/MainClass.java | 8 ++ 2 files changed, 159 insertions(+) create mode 100644 src/Calculator/Calculator.java create mode 100644 src/Calculator/MainClass.java diff --git a/src/Calculator/Calculator.java b/src/Calculator/Calculator.java new file mode 100644 index 0000000..8092cb6 --- /dev/null +++ b/src/Calculator/Calculator.java @@ -0,0 +1,151 @@ +package Calculator; +import java.awt.*; +import javax.swing.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +public class Calculator extends JFrame implements ActionListener{ + JTextField text; + JPanel panel; + JButton [][] button=new JButton[5][5]; + JMenuBar menubar; + JMenu menu1,menu2,menu3; + + Calculator(){ + init(); + setVisible(true); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + validate(); + + } + void init(){ + setTitle("计算器"); + setBounds(100,100,400,450); + setLayout(new BorderLayout()); + + menubar=new JMenuBar(); //添加菜单项 + menu1=new JMenu("编辑(E)"); + menu2=new JMenu("查看(V)"); + menu3=new JMenu("帮助(H)"); + menubar.add(menu1); + menubar.add(menu2); + menubar.add(menu3); + setJMenuBar(menubar); + + String [][] str= { //添加按钮 + {" ","C","CE","x^y","log"}, + {"7","8","9","/","sqrt"}, + {"4","5","6","*","%"}, + {"1","2","3","-","+/-"}, + {"00","0",".","+","="} + }; + panel=new JPanel(); + panel.setLayout(new GridLayout(5,5)); + for(int i=0;i<5;i++) { + for(int j=0;j<5;j++) { + button[i][j]=new JButton(str[i][j]); + panel.add(button[i][j]); + button[i][j].addActionListener(this);//给所有按钮加上监听器 + } + } + add(panel,BorderLayout.CENTER); + + text=new JTextField(); + add(text,BorderLayout.NORTH); //添加文本框 + text.setPreferredSize(new Dimension (370,60));//设置文本框大小 + } + + + String Mem="0";//储存值 + String number=null; + String fuhao=null; + String regex="[^.0123456789=]x?\\p{Punct}*y?[a-z]*"; + public void actionPerformed(ActionEvent e) { + String str=e.getActionCommand(); + if(".0123456789".indexOf(str)!=-1) { + this.text.setText(text.getText()+str); //使文本框能够同时显示多个数字 + } + else if(str.matches(regex)) { + fuhao=str;// + number=this.text.getText(); + this.text.setText(" "); + } + else if(str.equals("=")) { + double a; + double b; + double result=1; + if(fuhao.equals("+")) {//加 + a=Double.valueOf(number); + b=Double.valueOf(text.getText()); + result=a+b; + text.setText(String.valueOf(result)); + } + else if(fuhao.equals("-")) { //减 + a=Double.valueOf(number); + b=Double.valueOf(text.getText()); + result=a-b; + text.setText(String.valueOf(result)); + } + else if(fuhao.equals("*")) { //乘 + a=Double.valueOf(number); + b=Double.valueOf(text.getText()); + result=a*b; + text.setText(String.valueOf(result)); + } + else if(fuhao.equals("/")) { //除 + a=Double.valueOf(number); + b=Double.valueOf(text.getText()); + if(b!=0) { + result=a/b; + text.setText(String.valueOf(result)); + } + else + text.setText("不能除以0"); + + } + else if(fuhao.equals("%")) { //求余 + a=Double.valueOf(number); + b=Double.valueOf(text.getText()); + result=a%b; + text.setText(String.valueOf(result)); + } + else if(fuhao.equals("+/-")) { //加减运算 + a=Double.valueOf(number); + b=Double.valueOf(text.getText()); + double result1=a+b; + double result2=a-b; + text.setText(String.valueOf(result1+" or "+result2)); + } + else if(fuhao.equals("x^y")) { //幂 + a=Double.valueOf(number); + b=Double.valueOf(text.getText()); + for(int i=0;i Date: Tue, 7 Jun 2022 22:39:02 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=94=B9=E6=AD=A3=E4=BA=86C=E3=80=81CE?= =?UTF-8?q?=E5=92=8CBackspace=E9=94=AE=EF=BC=8C=E8=B0=83=E6=95=B4=E4=BA=86?= =?UTF-8?q?=E5=AD=97=E4=BD=93=E5=A4=A7=E5=B0=8F=E5=92=8C=E6=8C=89=E9=92=AE?= =?UTF-8?q?=E9=A2=9C=E8=89=B2=E4=BD=BF=E7=95=8C=E9=9D=A2=E7=9C=8B=E8=B5=B7?= =?UTF-8?q?=E6=9D=A5=E6=9B=B4=E8=88=92=E9=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Calculator/Calculator.java | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/src/Calculator/Calculator.java b/src/Calculator/Calculator.java index 8092cb6..25824fe 100644 --- a/src/Calculator/Calculator.java +++ b/src/Calculator/Calculator.java @@ -19,7 +19,7 @@ public class Calculator extends JFrame implements ActionListener{ } void init(){ setTitle("计算器"); - setBounds(100,100,400,450); + setBounds(100,100,600,680); setLayout(new BorderLayout()); menubar=new JMenuBar(); //添加菜单项 @@ -32,7 +32,7 @@ public class Calculator extends JFrame implements ActionListener{ setJMenuBar(menubar); String [][] str= { //添加按钮 - {" ","C","CE","x^y","log"}, + {"Backspace","C","CE","x^y","log"}, {"7","8","9","/","sqrt"}, {"4","5","6","*","%"}, {"1","2","3","-","+/-"}, @@ -44,6 +44,8 @@ public class Calculator extends JFrame implements ActionListener{ for(int j=0;j<5;j++) { button[i][j]=new JButton(str[i][j]); panel.add(button[i][j]); + button[i][j].setBackground(new Color(238,247,196));//设置按钮的背景颜色为橙色 + button[i][j].setFont(new Font("微软雅黑", Font.BOLD, 16)); //设置按钮字体、样式、大小 button[i][j].addActionListener(this);//给所有按钮加上监听器 } } @@ -51,7 +53,8 @@ public class Calculator extends JFrame implements ActionListener{ text=new JTextField(); add(text,BorderLayout.NORTH); //添加文本框 - text.setPreferredSize(new Dimension (370,60));//设置文本框大小 + text.setPreferredSize(new Dimension (400,100));//设置文本框大小 + text.setFont(new Font("微软雅黑", Font.PLAIN, 50)); //设置字体、样式、大小 } @@ -136,16 +139,21 @@ public class Calculator extends JFrame implements ActionListener{ } - if(str.equals("C")) //清除 - str=null; - else if(str.equals("CE")) { //真的成功了的退格键 - str=text.getText().substring(0,text.getText().length()-1); - text.setText(str); - if(str.equals("")){ - text.setText(" "); + if(str.equals("C")) //清空所有 + str=null; + else if(str.equals("Backspace")) { //退格键 + str=text.getText().substring(0,text.getText().length()-1); + text.setText(str); + if(str.equals("")){ + text.setText(" "); } - } + else if(str.equals("CE")) { //局部清除 + if(text.getText()!=null) + text.setText(""); + } + + } } -- Gitee From 6fde69a0f67a1948b25898fa6d28db714882b214 Mon Sep 17 00:00:00 2001 From: 86159 <86159@LAPTOP-EDNSE91R> Date: Tue, 7 Jun 2022 23:41:46 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=BA=86=E2=80=9C+/-?= =?UTF-8?q?=E2=80=9D=E7=AC=A6=E7=9A=84=E7=94=A8=E6=B3=95=EF=BC=8C=E7=BA=A0?= =?UTF-8?q?=E6=AD=A3=E4=B8=BA=E6=9B=B4=E6=94=B9=E6=AD=A3=E8=B4=9F=E5=8F=B7?= =?UTF-8?q?=E7=9A=84=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Calculator/Calculator.java | 35 +++++++++++++++++++++++----------- 1 file changed, 24 insertions(+), 11 deletions(-) diff --git a/src/Calculator/Calculator.java b/src/Calculator/Calculator.java index 25824fe..58a1e00 100644 --- a/src/Calculator/Calculator.java +++ b/src/Calculator/Calculator.java @@ -61,7 +61,7 @@ public class Calculator extends JFrame implements ActionListener{ String Mem="0";//储存值 String number=null; String fuhao=null; - String regex="[^.0123456789=]x?\\p{Punct}*y?[a-z]*"; + String regex="[^.0123456789=]x?\\p{Punct}?y?[a-z]*"; public void actionPerformed(ActionEvent e) { String str=e.getActionCommand(); if(".0123456789".indexOf(str)!=-1) { @@ -102,22 +102,27 @@ public class Calculator extends JFrame implements ActionListener{ text.setText(String.valueOf(result)); } else - text.setText("不能除以0"); + text.setText("除数不能为0"); } else if(fuhao.equals("%")) { //求余 a=Double.valueOf(number); b=Double.valueOf(text.getText()); - result=a%b; - text.setText(String.valueOf(result)); + if(b!=0) { + result=a%b; + text.setText(String.valueOf(result)); + } + else + text.setText("除数不能为0"); + } - else if(fuhao.equals("+/-")) { //加减运算 + /*else if(fuhao.equals("+/-")) { //加减运算 a=Double.valueOf(number); b=Double.valueOf(text.getText()); double result1=a+b; double result2=a-b; text.setText(String.valueOf(result1+" or "+result2)); - } + }*/ else if(fuhao.equals("x^y")) { //幂 a=Double.valueOf(number); b=Double.valueOf(text.getText()); @@ -142,17 +147,25 @@ public class Calculator extends JFrame implements ActionListener{ if(str.equals("C")) //清空所有 str=null; else if(str.equals("Backspace")) { //退格键 - str=text.getText().substring(0,text.getText().length()-1); - text.setText(str); - if(str.equals("")){ - text.setText(" "); + str=text.getText().substring(0,text.getText().length()-1); + text.setText(str); + if(str.equals("")){ + text.setText(" "); } } else if(str.equals("CE")) { //局部清除 if(text.getText()!=null) text.setText(""); } - + else if(str.equals("+/-")) { //更改正负号 + String regex1="-?[.0123456789]+"; + if(text.getText().matches(regex1)) { + double num1=Double.valueOf(text.getText()); + num1=0-num1; + text.setText(String.valueOf(num1)); + } + + } } -- Gitee From a5a9c99953ef6042353da8487cea1ef4d271b452 Mon Sep 17 00:00:00 2001 From: 86159 <86159@LAPTOP-EDNSE91R> Date: Wed, 8 Jun 2022 15:11:50 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E5=AF=B9=E8=B4=9F=E6=95=B0=E6=B1=82?= =?UTF-8?q?=E5=B9=B3=E6=96=B9=E6=A0=B9=E8=BF=9B=E8=A1=8C=E4=BA=86=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E5=A4=84=E7=90=86=EF=BC=8C=E4=BB=A5=E5=8F=8A=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E4=BA=86=E2=80=9C00=E2=80=9D=E9=94=AE=E7=9A=84?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/Calculator/Calculator.java | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/Calculator/Calculator.java b/src/Calculator/Calculator.java index 58a1e00..f0f2b37 100644 --- a/src/Calculator/Calculator.java +++ b/src/Calculator/Calculator.java @@ -44,7 +44,7 @@ public class Calculator extends JFrame implements ActionListener{ for(int j=0;j<5;j++) { button[i][j]=new JButton(str[i][j]); panel.add(button[i][j]); - button[i][j].setBackground(new Color(238,247,196));//设置按钮的背景颜色为橙色 + button[i][j].setBackground(new Color(238,247,196));//设置按钮的背景颜色为绿色 button[i][j].setFont(new Font("微软雅黑", Font.BOLD, 16)); //设置按钮字体、样式、大小 button[i][j].addActionListener(this);//给所有按钮加上监听器 } @@ -61,21 +61,21 @@ public class Calculator extends JFrame implements ActionListener{ String Mem="0";//储存值 String number=null; String fuhao=null; - String regex="[^.0123456789=]x?\\p{Punct}?y?[a-z]*"; + String regex="[^.0123456789=]x?\\p{Punct}?y?[logsqrt]*"; public void actionPerformed(ActionEvent e) { String str=e.getActionCommand(); - if(".0123456789".indexOf(str)!=-1) { + if(".00123456789".indexOf(str)!=-1) { this.text.setText(text.getText()+str); //使文本框能够同时显示多个数字 } else if(str.matches(regex)) { fuhao=str;// number=this.text.getText(); - this.text.setText(" "); + this.text.setText(""); } else if(str.equals("=")) { double a; double b; - double result=1; + double result = 1; if(fuhao.equals("+")) {//加 a=Double.valueOf(number); b=Double.valueOf(text.getText()); @@ -116,13 +116,6 @@ public class Calculator extends JFrame implements ActionListener{ text.setText("除数不能为0"); } - /*else if(fuhao.equals("+/-")) { //加减运算 - a=Double.valueOf(number); - b=Double.valueOf(text.getText()); - double result1=a+b; - double result2=a-b; - text.setText(String.valueOf(result1+" or "+result2)); - }*/ else if(fuhao.equals("x^y")) { //幂 a=Double.valueOf(number); b=Double.valueOf(text.getText()); @@ -131,10 +124,14 @@ public class Calculator extends JFrame implements ActionListener{ } text.setText(String.valueOf(result)); } - else if(fuhao.equals("sqrt")) { //平方 + else if(fuhao.equals("sqrt")) { //根号 a=Double.valueOf(number); - result=Math.sqrt(a); - text.setText(String.valueOf(result)); + if(a>=0) { + result=Math.sqrt(a); + text.setText(String.valueOf(result)); + } + else + text.setText("根号内不能为负"); } else if(fuhao.equals("log")) { //对数 a=Double.valueOf(number); -- Gitee