From 359f52c5ef76ae13815882fa186cc37a90ca74ca Mon Sep 17 00:00:00 2001 From: 86134 <86134@Swift-3z> Date: Thu, 3 Jun 2021 21:17:00 +0800 Subject: [PATCH 01/19] =?UTF-8?q?=E7=AC=AC=E4=B8=80=E6=AC=A1=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2020spring/Test.java | 10 ------- src/jsq_zsl/Test.java | 54 ++++++++++++++++++++++++++++++++++++ 2 files changed, 54 insertions(+), 10 deletions(-) delete mode 100644 src/java2020spring/Test.java create mode 100644 src/jsq_zsl/Test.java diff --git a/src/java2020spring/Test.java b/src/java2020spring/Test.java deleted file mode 100644 index fc09c19..0000000 --- a/src/java2020spring/Test.java +++ /dev/null @@ -1,10 +0,0 @@ -package java2020spring; - -public class Test { - - public static void main(String[] args) { - System.out.println("Hello world!"); - - } - -} diff --git a/src/jsq_zsl/Test.java b/src/jsq_zsl/Test.java new file mode 100644 index 0000000..8ea5a8c --- /dev/null +++ b/src/jsq_zsl/Test.java @@ -0,0 +1,54 @@ +package jsq_zsl; + +import java.awt.*; +import java.awt.event.*; +import javax.swing.*; +import java.util.*; + +public class Test extends JFrame { + public static void main(String[] args) { + new Test(); + } + + /** + * 设计计算器的窗口外观 + */ + + private final static int MR_WIDTH = 400; + private final static int MR_HEIGHT = 600; //默认窗口宽度和高度 + + private JTextField text = null; + private JButton button = null; //存储标记 + + + private String[] a = {"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","+/-","0",".","+","="}; + private String[] m = {"MC","MR","MS","M+"}; + private String[] c = {"CE","C","Back"}; //私有字符串按钮符号 + + + public Test(){ + this.setTitle("计算器"); + this.setSize(MR_WIDTH, MR_HEIGHT); + this.setLocationRelativeTo(null); + this.setResizable(false); + + //添加底层 + JPanel panel = new JPanel(); + panel.setLayout(new BorderLayout(5,5)); + panel.add(getTextField(), BorderLayout.NORTH); + panel.setPreferredSize(new Dimension(MR_WIDTH, MR_HEIGHT)); + + + +} + + + private JTextField getTextField() { //文本显示框 + text = new JTextField("0",10); + //text.setSize(500, 50); + return text; + } +} + + + -- Gitee From 3dce92ac957c1d9838110624c371bbbe32ec0b1e Mon Sep 17 00:00:00 2001 From: 86134 <86134@Swift-3z> Date: Fri, 4 Jun 2021 22:59:35 +0800 Subject: [PATCH 02/19] =?UTF-8?q?=E7=AC=AC=E4=BA=8C=E6=AC=A1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/jsq_zsl/Test.java | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/jsq_zsl/Test.java b/src/jsq_zsl/Test.java index 8ea5a8c..4280c98 100644 --- a/src/jsq_zsl/Test.java +++ b/src/jsq_zsl/Test.java @@ -38,6 +38,13 @@ public class Test extends JFrame { panel.add(getTextField(), BorderLayout.NORTH); panel.setPreferredSize(new Dimension(MR_WIDTH, MR_HEIGHT)); + JButton[] mButton=getMButton(); + JPanel panel1=new JPanel1(); + panel1.setLayout(new GridLayout(5,1,0,5)); + for(JButton b:mButton) { + panel1.add(b); + } + panel1.add(panel1,BorderLayout.WEST); } -- Gitee From 97eec03af7e02d876720b665a153aafd1f03e0f7 Mon Sep 17 00:00:00 2001 From: 86134 <86134@Swift-3z> Date: Sun, 6 Jun 2021 00:17:59 +0800 Subject: [PATCH 03/19] =?UTF-8?q?=E7=AC=AC=E4=B8=89=E6=AC=A1=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E2=80=94=E2=80=94=E7=95=8C=E9=9D=A2=E5=A4=A7=E8=87=B4?= =?UTF-8?q?=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/jsq_zsl/Test.java | 112 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 104 insertions(+), 8 deletions(-) diff --git a/src/jsq_zsl/Test.java b/src/jsq_zsl/Test.java index 4280c98..1461cb9 100644 --- a/src/jsq_zsl/Test.java +++ b/src/jsq_zsl/Test.java @@ -27,34 +27,130 @@ public class Test extends JFrame { public Test(){ - this.setTitle("计算器"); + this.setTitle("计算器DDD"); this.setSize(MR_WIDTH, MR_HEIGHT); this.setLocationRelativeTo(null); this.setResizable(false); //添加底层 JPanel panel = new JPanel(); - panel.setLayout(new BorderLayout(5,5)); + panel.setLayout(new BorderLayout(10,1)); panel.add(getTextField(), BorderLayout.NORTH); panel.setPreferredSize(new Dimension(MR_WIDTH, MR_HEIGHT)); + //按钮符号设计放置 JButton[] mButton=getMButton(); - JPanel panel1=new JPanel1(); + JPanel panel1=new JPanel(); panel1.setLayout(new GridLayout(5,1,0,5)); - for(JButton b:mButton) { + for(JButton b : mButton) { panel1.add(b); } - panel1.add(panel1,BorderLayout.WEST); + panel.add(panel1,BorderLayout.WEST); + + JButton[] rButton=getRButton(); + JPanel panel2=new JPanel(); + panel2.setLayout(new BorderLayout(1,5)); + JPanel panel21=new JPanel(); + panel21.setLayout(new GridLayout(1,3,3,3)); + for(JButton b : rButton) { + panel21.add(b); + } + panel2.add(panel21,BorderLayout.NORTH); + + JButton[] nButton=getNButton(); + JPanel panel22=new JPanel(); + panel22.setLayout(new GridLayout(4,5,3,5)); + for(JButton b : nButton) { + panel22.add(b); + } + panel2.add(panel22,BorderLayout.CENTER); + panel.add(panel2,BorderLayout.CENTER); + + this.add(panel); + this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + this.setVisible(true); } - - - private JTextField getTextField() { //文本显示框 + //文本显示框 + private JTextField getTextField() { text = new JTextField("0",10); //text.setSize(500, 50); return text; } + + //数字按钮 + private JButton[] getNButton(){ + String[] fButton= {"/","*","-","+","="}; + JButton[] nbutton=new JButton[a.length]; + for(int i=0;i=0) { + b.setForeground(Color.BLACK); + } + else { + b.setForeground(Color.black); + } + nbutton[i]=b; + } + return nbutton; + } + //操作健 + private JButton[] getMButton(){ + JButton[] mbutton = new JButton[m.length + 1]; + mbutton[0] = getButton(); + for(int i = 0; i < this.m.length; i++){ + JButton b = new JButton(this.m[i]); + b.addActionListener(getActionListener()); + b.setForeground(Color.red); + mbutton[i+1] = b; + } + return mbutton; + } + private JButton[] getRButton(){ + JButton[] rbutton = new JButton[c.length]; + for(int i = 0; i < this.c.length; i++){ + JButton b = new JButton(this.c[i]); + b.addActionListener(getActionListener()); + b.setForeground(Color.BLACK); + rbutton[i] = b; + } + return rbutton; + } + private JButton getButton(){ + button = new JButton(); + return button; + } + private ActionListener getActionListener(){ + ActionListener actionListener = new ActionListener() { + + @Override + public void actionPerformed(ActionEvent e) { + String cmd = e.getActionCommand(); + String result = null; + try { + result = service.callMethod(cmd, text.getText()); + } catch (Exception e2) { + System.out.println(e2.getMessage()); + } + if(cmd.indexOf("MC") == 0){ + button.setText(""); + }else if(cmd.indexOf("M") == 0){ + button.setText("M"); + } + //显示计算结果 + if(result != null){ + text.setText(result); + } + + } + }; + return actionListener; + } + } -- Gitee From 502498edb82ddd290e8124b6cbc6d311b7b94d06 Mon Sep 17 00:00:00 2001 From: 86134 <86134@Swift-3z> Date: Sun, 6 Jun 2021 19:03:58 +0800 Subject: [PATCH 04/19] =?UTF-8?q?=E7=AC=AC=E5=9B=9B=E6=AC=A1=E6=8F=90?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/jsq_zsl/Jservice.java | 47 +++++++++++++++++++++++++++++++++++++ src/jsq_zsl/Test.java | 49 +++++++++++++++++++++++---------------- 2 files changed, 76 insertions(+), 20 deletions(-) create mode 100644 src/jsq_zsl/Jservice.java diff --git a/src/jsq_zsl/Jservice.java b/src/jsq_zsl/Jservice.java new file mode 100644 index 0000000..bf5ccb1 --- /dev/null +++ b/src/jsq_zsl/Jservice.java @@ -0,0 +1,47 @@ +package jsq_zsl; + +public class Jservice { + private boolean theSecondNum = false; + private String d; + private String firstNum = "0"; + private String secondNum = "null"; + private double s; + private String numString = "0123456789."; + private String fhString = "+-*/"; + + public String catNum(String cmd, String text) { + String result = cmd; + // 如果text不等于0 + if (!"0".equals(text)) { + if (theSecondNum) { + theSecondNum = false; + } + else { + result = text + cmd; + } + } + if (result.indexOf(".") == 0) { + result = "0" + result; + } + return result; + } + + public String setOp(String cmd, String text) { + this.d = cmd; + this.firstNum = text; + this.secondNum = null; + this.theSecondNum = true; + return null; + } + + public String cal(String text, boolean isPercent) { + double secondResult = secondNum == null ? Double.valueOf(text).doubleValue() : Double.valueOf(secondNum).doubleValue(); + + //除数为0 + if(secondResult == 0 && this.d.equals("/")){ + return "除数不能为0"; + } + + } + +} diff --git a/src/jsq_zsl/Test.java b/src/jsq_zsl/Test.java index 1461cb9..881f4dc 100644 --- a/src/jsq_zsl/Test.java +++ b/src/jsq_zsl/Test.java @@ -13,21 +13,21 @@ public class Test extends JFrame { /** * 设计计算器的窗口外观 */ - - private final static int MR_WIDTH = 400; - private final static int MR_HEIGHT = 600; //默认窗口宽度和高度 + private static final long serialVersionUID=1L;//实现序列化类的不同版本间的兼容性 + private final static int MR_WIDTH = 500; + private final static int MR_HEIGHT = 600; //默认窗口宽度和高度 private JTextField text = null; - private JButton button = null; //存储标记 + private JButton button = null; //存储标记 - - private String[] a = {"7","8","9","/","sqrt","4","5","6","*","%","1","2","3","-","1/x","+/-","0",".","+","="}; + private String[] a = {"7","8","9","/","开方","4","5","6","*","正负","1","2","3","-","倒数",".","0","+","=","删除"}; private String[] m = {"MC","MR","MS","M+"}; - private String[] c = {"CE","C","Back"}; //私有字符串按钮符号 + private String[] c = {"CE","C"}; //私有字符串按钮符号 + private Jservice service=new Jservice(); public Test(){ - this.setTitle("计算器DDD"); + this.setTitle("计算器DDD"); //标题 this.setSize(MR_WIDTH, MR_HEIGHT); this.setLocationRelativeTo(null); this.setResizable(false); @@ -38,7 +38,7 @@ public class Test extends JFrame { panel.add(getTextField(), BorderLayout.NORTH); panel.setPreferredSize(new Dimension(MR_WIDTH, MR_HEIGHT)); - //按钮符号设计放置 + //按钮符号设计与放置 JButton[] mButton=getMButton(); JPanel panel1=new JPanel(); panel1.setLayout(new GridLayout(5,1,0,5)); @@ -51,11 +51,11 @@ public class Test extends JFrame { JPanel panel2=new JPanel(); panel2.setLayout(new BorderLayout(1,5)); JPanel panel21=new JPanel(); - panel21.setLayout(new GridLayout(1,3,3,3)); + panel21.setLayout(new GridLayout(1,2,2,2)); for(JButton b : rButton) { panel21.add(b); } - panel2.add(panel21,BorderLayout.NORTH); + panel2.add(panel21,BorderLayout.SOUTH); JButton[] nButton=getNButton(); JPanel panel22=new JPanel(); @@ -74,8 +74,10 @@ public class Test extends JFrame { } //文本显示框 private JTextField getTextField() { - text = new JTextField("0",10); - //text.setSize(500, 50); + text = new JTextField("0",50); + text.setSize(500, 100); + Font font = new Font("微软雅黑", Font.PLAIN, 20); + text.setFont(font); return text; } @@ -89,10 +91,14 @@ public class Test extends JFrame { Arrays.parallelSort(fButton); if(Arrays.binarySearch(fButton, a[i])>=0) { - b.setForeground(Color.BLACK); + b.setForeground(Color.red); + Font font = new Font("微软雅黑", Font.BOLD, 22);//创建1个字体实例 + b.setFont(font); } else { b.setForeground(Color.black); + Font font = new Font("微软雅黑", Font.BOLD, 20);//创建1个字体实例 + b.setFont(font); } nbutton[i]=b; } @@ -105,7 +111,9 @@ public class Test extends JFrame { for(int i = 0; i < this.m.length; i++){ JButton b = new JButton(this.m[i]); b.addActionListener(getActionListener()); - b.setForeground(Color.red); + b.setForeground(Color.BLUE); + Font font = new Font("微软雅黑", Font.PLAIN, 20);//创建1个字体实例 + b.setFont(font); mbutton[i+1] = b; } return mbutton; @@ -116,6 +124,8 @@ public class Test extends JFrame { JButton b = new JButton(this.c[i]); b.addActionListener(getActionListener()); b.setForeground(Color.BLACK); + Font font = new Font("微软雅黑", Font.PLAIN, 20);//创建1个字体实例 + b.setFont(font); rbutton[i] = b; } return rbutton; @@ -129,6 +139,7 @@ public class Test extends JFrame { @Override public void actionPerformed(ActionEvent e) { + String cmd = e.getActionCommand(); String result = null; try { @@ -143,14 +154,12 @@ public class Test extends JFrame { } //显示计算结果 if(result != null){ - text.setText(result); - } - + text.setText(result); + } } }; return actionListener; - } - + } } -- Gitee From d19e801f69f7910c8b8e468c20b8947fbc410042 Mon Sep 17 00:00:00 2001 From: 86134 <86134@Swift-3z> Date: Tue, 8 Jun 2021 00:01:24 +0800 Subject: [PATCH 05/19] =?UTF-8?q?=E7=AC=AC=E4=BA=94=E6=AC=A1=E4=B8=8A?= =?UTF-8?q?=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/jsq_zsl/Jservice.java | 95 ++++++++++++++++++++++++++++++++++++++- src/jsq_zsl/MyMath.java | 15 +++++++ src/jsq_zsl/Test.java | 11 ++--- 3 files changed, 114 insertions(+), 7 deletions(-) create mode 100644 src/jsq_zsl/MyMath.java diff --git a/src/jsq_zsl/Jservice.java b/src/jsq_zsl/Jservice.java index bf5ccb1..ad42ed9 100644 --- a/src/jsq_zsl/Jservice.java +++ b/src/jsq_zsl/Jservice.java @@ -1,5 +1,6 @@ package jsq_zsl; + public class Jservice { private boolean theSecondNum = false; private String d; @@ -37,11 +38,101 @@ public class Jservice { public String cal(String text, boolean isPercent) { double secondResult = secondNum == null ? Double.valueOf(text).doubleValue() : Double.valueOf(secondNum).doubleValue(); - //除数为0 + //除数为0的容错处理 if(secondResult == 0 && this.d.equals("/")){ return "除数不能为0"; } + //加减乘除,valueOf把基本类型转化为对象类型 + if(this.d.equals("+")){ + firstNum = String.valueOf(MyMath.add(Double.valueOf(firstNum),secondResult)); + } + else if (this.d.equals("-")) { + firstNum = String.valueOf(MyMath.subtract(Double.valueOf(firstNum),secondResult)); + } + else if (this.d.equals("*")) { + firstNum = String.valueOf(MyMath.multiply(Double.valueOf(firstNum),secondResult)); + } + else if (this.d.equals("/")) { + firstNum = String.valueOf(MyMath.divide(Double.valueOf(firstNum),secondResult)); + } + secondNum = secondNum == null ? text :secondNum; + this.theSecondNum = true; + return firstNum; + } + //求开方 + public String sqrt(String text){ + this.theSecondNum = true; + return String.valueOf(Math.sqrt(Double.valueOf(text))); + } + //求倒数 + public String setReciprocal(String text){ + if (text.equals("0")){ + return text; + }else{ + this.theSecondNum = true; + return String.valueOf(MyMath.divide(1, Double.valueOf(text))); + } + } + //关于M键的存储 + public String mCmd(String cmd,String text){ + if(cmd.equals("M+")){ + s = MyMath.add(s, Double.valueOf(text)); + }else if (cmd.equals("MC")) { + s = 0; + }else if (cmd.equals("MR")) { + theSecondNum = true; + return String.valueOf(s); + }else if (cmd.equals("MS")) { + s = Double.valueOf(text).doubleValue(); + } + return null; + } + //删除键实现退格 + public String backSpace(String text){ + return text.equals("0") || text.equals("") ? "0" :text.substring(0,text.length()-1); + } + //正负号转换 + public String setNegative(String text){ + if(text.indexOf("-") == 0){ + return text.substring(1,text.length()); + } + else{ + return "-" + text; + } + } + //C清0 + public String clearAll(){ + this.firstNum = "0"; + this.secondNum = null; + return this.firstNum; + } + //CE清空 + public String clear(String text){ + return "0"; + } + //各个按钮对应实现的方法调用 + public String callMethod(String cmd, String text){ + if(cmd.equals("C")){ + return clearAll(); + }else if(cmd.equals("CE")){ + return clear(text); + }else if (cmd.equals("删除")) { + return backSpace(text); + }else if (numString.indexOf(cmd) != -1) { + return catNum(cmd, text); + }else if (fhString.indexOf(cmd) != -1) { + return setOp(cmd, text); + }else if (cmd.equals("正负")) { + return setNegative(text); + }else if(cmd.equals("倒数")){ + return setReciprocal(text); + }else if (cmd.equals("开方")) { + return sqrt(text); + }else if(cmd.equals("=")){ + return cal(text, false); + }else { + return mCmd(cmd, text); + } } - } diff --git a/src/jsq_zsl/MyMath.java b/src/jsq_zsl/MyMath.java new file mode 100644 index 0000000..a857c64 --- /dev/null +++ b/src/jsq_zsl/MyMath.java @@ -0,0 +1,15 @@ +package jsq_zsl; + +import java.math.BigDecimal; + +public class MyMath { + /** + * 为一个double类型创建BigDecimal对象,实现精确度计算 + */ + private static BigDecimal getBigDecimal(double number){ + return new BigDecimal(number); + } + + + +} diff --git a/src/jsq_zsl/Test.java b/src/jsq_zsl/Test.java index 881f4dc..e0e4d2e 100644 --- a/src/jsq_zsl/Test.java +++ b/src/jsq_zsl/Test.java @@ -39,6 +39,7 @@ public class Test extends JFrame { panel.setPreferredSize(new Dimension(MR_WIDTH, MR_HEIGHT)); //按钮符号设计与放置 + JButton[] mButton=getMButton(); JPanel panel1=new JPanel(); panel1.setLayout(new GridLayout(5,1,0,5)); @@ -71,7 +72,7 @@ public class Test extends JFrame { this.setVisible(true); -} + } //文本显示框 private JTextField getTextField() { text = new JTextField("0",50); @@ -81,7 +82,7 @@ public class Test extends JFrame { return text; } - //数字按钮 + //数字、计算a按钮 private JButton[] getNButton(){ String[] fButton= {"/","*","-","+","="}; JButton[] nbutton=new JButton[a.length]; @@ -134,7 +135,7 @@ public class Test extends JFrame { button = new JButton(); return button; } - private ActionListener getActionListener(){ + private ActionListener getActionListener(){ //监听器构造 ActionListener actionListener = new ActionListener() { @Override @@ -144,8 +145,8 @@ public class Test extends JFrame { String result = null; try { result = service.callMethod(cmd, text.getText()); - } catch (Exception e2) { - System.out.println(e2.getMessage()); + } catch (Exception e1) { + System.out.println(e1.getMessage()); } if(cmd.indexOf("MC") == 0){ button.setText(""); -- Gitee From c7588b950501b9417fa74982e9cdf5467b6bce6d Mon Sep 17 00:00:00 2001 From: 86134 <86134@Swift-3z> Date: Tue, 8 Jun 2021 19:12:13 +0800 Subject: [PATCH 06/19] =?UTF-8?q?=E7=AC=AC=E5=85=AD=E6=AC=A1=E4=B8=8A?= =?UTF-8?q?=E4=BA=A4=E2=80=94=E2=80=94=E5=B0=9D=E8=AF=95=E5=B7=A5=E5=8E=82?= =?UTF-8?q?=E7=B1=BB=E8=BF=98=E6=9C=89bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/jsq_zsl/C.java | 8 +++++++ src/jsq_zsl/CE.java | 8 +++++++ src/jsq_zsl/Jservice.java | 26 +++++++-------------- src/jsq_zsl/MyMath.java | 24 ++++++++++++++++--- src/jsq_zsl/Operation.java | 5 ++++ src/jsq_zsl/OperatorFactory.java | 21 +++++++++++++++++ src/jsq_zsl/Test.java | 19 ++++++++------- "src/jsq_zsl/\345\200\222\346\225\260.java" | 8 +++++++ "src/jsq_zsl/\345\210\240\351\231\244.java" | 8 +++++++ "src/jsq_zsl/\345\274\200\346\226\271.java" | 8 +++++++ "src/jsq_zsl/\346\255\243\350\264\237.java" | 8 +++++++ "src/jsq_zsl/\347\255\211\344\272\216.java" | 8 +++++++ 12 files changed, 123 insertions(+), 28 deletions(-) create mode 100644 src/jsq_zsl/C.java create mode 100644 src/jsq_zsl/CE.java create mode 100644 src/jsq_zsl/Operation.java create mode 100644 src/jsq_zsl/OperatorFactory.java create mode 100644 "src/jsq_zsl/\345\200\222\346\225\260.java" create mode 100644 "src/jsq_zsl/\345\210\240\351\231\244.java" create mode 100644 "src/jsq_zsl/\345\274\200\346\226\271.java" create mode 100644 "src/jsq_zsl/\346\255\243\350\264\237.java" create mode 100644 "src/jsq_zsl/\347\255\211\344\272\216.java" diff --git a/src/jsq_zsl/C.java b/src/jsq_zsl/C.java new file mode 100644 index 0000000..1aac390 --- /dev/null +++ b/src/jsq_zsl/C.java @@ -0,0 +1,8 @@ +package jsq_zsl; + +public class C extends Jservice implements Operation { + @Override + public String callMethod(String cmd, String text) { + return clearAll(); + } +} diff --git a/src/jsq_zsl/CE.java b/src/jsq_zsl/CE.java new file mode 100644 index 0000000..2c4364c --- /dev/null +++ b/src/jsq_zsl/CE.java @@ -0,0 +1,8 @@ +package jsq_zsl; + +public class CE extends Jservice implements Operation { + @Override + public String callMethod(String cmd, String text) { + return clear(text); + } +} diff --git a/src/jsq_zsl/Jservice.java b/src/jsq_zsl/Jservice.java index ad42ed9..f8b2f36 100644 --- a/src/jsq_zsl/Jservice.java +++ b/src/jsq_zsl/Jservice.java @@ -35,7 +35,7 @@ public class Jservice { return null; } - public String cal(String text, boolean isPercent) { + public String call(String text) { double secondResult = secondNum == null ? Double.valueOf(text).doubleValue() : Double.valueOf(secondNum).doubleValue(); //除数为0的容错处理 @@ -111,28 +111,20 @@ public class Jservice { public String clear(String text){ return "0"; } - //各个按钮对应实现的方法调用 + + + //各个按钮对应实现的方法调用返回 public String callMethod(String cmd, String text){ - if(cmd.equals("C")){ - return clearAll(); - }else if(cmd.equals("CE")){ - return clear(text); - }else if (cmd.equals("删除")) { - return backSpace(text); - }else if (numString.indexOf(cmd) != -1) { + + if (numString.indexOf(cmd) != -1) { return catNum(cmd, text); }else if (fhString.indexOf(cmd) != -1) { return setOp(cmd, text); - }else if (cmd.equals("正负")) { - return setNegative(text); - }else if(cmd.equals("倒数")){ - return setReciprocal(text); - }else if (cmd.equals("开方")) { - return sqrt(text); - }else if(cmd.equals("=")){ - return cal(text, false); }else { return mCmd(cmd, text); + } } + public String cal( String cmd,String text) { + return OperatorFactory.getOperation(cmd).callMethod(cmd, text); } } diff --git a/src/jsq_zsl/MyMath.java b/src/jsq_zsl/MyMath.java index a857c64..8d0b569 100644 --- a/src/jsq_zsl/MyMath.java +++ b/src/jsq_zsl/MyMath.java @@ -1,6 +1,7 @@ package jsq_zsl; import java.math.BigDecimal; +import java.math.RoundingMode; public class MyMath { /** @@ -9,7 +10,24 @@ public class MyMath { private static BigDecimal getBigDecimal(double number){ return new BigDecimal(number); } - - - + public static double add(double num1, double num2) { + BigDecimal first = getBigDecimal(num1); + BigDecimal second = getBigDecimal(num2); + return first.add(second).doubleValue(); + } + public static double subtract(double num1, double num2) { + BigDecimal first = getBigDecimal(num1); + BigDecimal second = getBigDecimal(num2); + return first.subtract(second).doubleValue(); + } + public static double multiply(double num1, double num2) { + BigDecimal first = getBigDecimal(num1); + BigDecimal second = getBigDecimal(num2); + return first.multiply(second).doubleValue(); + } + public static double divide(double num1, double num2) { + BigDecimal first = getBigDecimal(num1); + BigDecimal second = getBigDecimal(num2); + return first.divide(second,3,RoundingMode.HALF_UP).doubleValue(); + } } diff --git a/src/jsq_zsl/Operation.java b/src/jsq_zsl/Operation.java new file mode 100644 index 0000000..c139d4d --- /dev/null +++ b/src/jsq_zsl/Operation.java @@ -0,0 +1,5 @@ +package jsq_zsl; + +public interface Operation { + String callMethod(String cmd, String text); +} diff --git a/src/jsq_zsl/OperatorFactory.java b/src/jsq_zsl/OperatorFactory.java new file mode 100644 index 0000000..dc10aaa --- /dev/null +++ b/src/jsq_zsl/OperatorFactory.java @@ -0,0 +1,21 @@ +package jsq_zsl; +import java.util.HashMap; +import java.util.Map; + +public class OperatorFactory { + static Map operationMap = new HashMap<>(); + + static { + operationMap.put("C", new C()); + operationMap.put("CE", new CE()); + operationMap.put("删除", new 删除()); + operationMap.put("正负", new 正负()); + operationMap.put("倒数", new 倒数()); + operationMap.put("开方", new 开方()); + operationMap.put("=", new 等于()); + } + + public static Operation getOperation(String cmd) { + return operationMap.get(cmd); + } +} \ No newline at end of file diff --git a/src/jsq_zsl/Test.java b/src/jsq_zsl/Test.java index e0e4d2e..a1a6600 100644 --- a/src/jsq_zsl/Test.java +++ b/src/jsq_zsl/Test.java @@ -7,9 +7,8 @@ import java.util.*; public class Test extends JFrame { public static void main(String[] args) { - new Test(); - } - + new Test(); + } /** * 设计计算器的窗口外观 */ @@ -22,12 +21,12 @@ public class Test extends JFrame { private String[] a = {"7","8","9","/","开方","4","5","6","*","正负","1","2","3","-","倒数",".","0","+","=","删除"}; private String[] m = {"MC","MR","MS","M+"}; - private String[] c = {"CE","C"}; //私有字符串按钮符号 + private String[] c = {"CE","C"};//私有字符串按钮符号 private Jservice service=new Jservice(); public Test(){ - this.setTitle("计算器DDD"); //标题 + this.setTitle("计算器DH"); //标题 this.setSize(MR_WIDTH, MR_HEIGHT); this.setLocationRelativeTo(null); this.setResizable(false); @@ -52,7 +51,7 @@ public class Test extends JFrame { JPanel panel2=new JPanel(); panel2.setLayout(new BorderLayout(1,5)); JPanel panel21=new JPanel(); - panel21.setLayout(new GridLayout(1,2,2,2)); + panel21.setLayout(new GridLayout(1,3,3,3)); for(JButton b : rButton) { panel21.add(b); } @@ -70,9 +69,8 @@ public class Test extends JFrame { this.add(panel); this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); this.setVisible(true); - - } + //文本显示框 private JTextField getTextField() { text = new JTextField("0",50); @@ -148,6 +146,11 @@ public class Test extends JFrame { } catch (Exception e1) { System.out.println(e1.getMessage()); } + try { + result = service.cal(cmd, text.getText()); + } catch (Exception e2) { + System.out.println(e2.getMessage()); + } if(cmd.indexOf("MC") == 0){ button.setText(""); }else if(cmd.indexOf("M") == 0){ diff --git "a/src/jsq_zsl/\345\200\222\346\225\260.java" "b/src/jsq_zsl/\345\200\222\346\225\260.java" new file mode 100644 index 0000000..f830398 --- /dev/null +++ "b/src/jsq_zsl/\345\200\222\346\225\260.java" @@ -0,0 +1,8 @@ +package jsq_zsl; + +public class 倒数 extends Jservice implements Operation { + @Override + public String callMethod(String cmd, String text) { + return setReciprocal(text); + } +} diff --git "a/src/jsq_zsl/\345\210\240\351\231\244.java" "b/src/jsq_zsl/\345\210\240\351\231\244.java" new file mode 100644 index 0000000..83779d6 --- /dev/null +++ "b/src/jsq_zsl/\345\210\240\351\231\244.java" @@ -0,0 +1,8 @@ +package jsq_zsl; + +public class 删除 extends Jservice implements Operation { + @Override + public String callMethod(String cmd, String text) { + return backSpace(text); + } +} diff --git "a/src/jsq_zsl/\345\274\200\346\226\271.java" "b/src/jsq_zsl/\345\274\200\346\226\271.java" new file mode 100644 index 0000000..bff88b1 --- /dev/null +++ "b/src/jsq_zsl/\345\274\200\346\226\271.java" @@ -0,0 +1,8 @@ +package jsq_zsl; + +public class 开方 extends Jservice implements Operation { + @Override + public String callMethod(String cmd, String text) { + return sqrt(text); + } +} diff --git "a/src/jsq_zsl/\346\255\243\350\264\237.java" "b/src/jsq_zsl/\346\255\243\350\264\237.java" new file mode 100644 index 0000000..d5ed4a0 --- /dev/null +++ "b/src/jsq_zsl/\346\255\243\350\264\237.java" @@ -0,0 +1,8 @@ +package jsq_zsl; + +public class 正负 extends Jservice implements Operation { + @Override + public String callMethod(String cmd, String text) { + return setNegative(text); + } +} diff --git "a/src/jsq_zsl/\347\255\211\344\272\216.java" "b/src/jsq_zsl/\347\255\211\344\272\216.java" new file mode 100644 index 0000000..5591c55 --- /dev/null +++ "b/src/jsq_zsl/\347\255\211\344\272\216.java" @@ -0,0 +1,8 @@ +package jsq_zsl; + +public class 等于 extends Jservice implements Operation { + @Override + public String callMethod(String cmd, String text) { + return call(text); + } +} -- Gitee From a80dacbe94044a02d6960ccf0325cb1740ea0caf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=91=E7=B1=B3?= <9115916+fytdjyguffxh66t78@user.noreply.gitee.com> Date: Thu, 10 Jun 2021 13:43:24 +0800 Subject: [PATCH 07/19] update README.md. --- README.md | 23 +++++++++-------------- 1 file changed, 9 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 40fc824..54211e6 100644 --- a/README.md +++ b/README.md @@ -1,20 +1,15 @@ -# 绉戝璁$畻鍣 +# 璁$畻鍣―H #### 绯荤粺鐩爣 绠瑕佷粙缁嶇郴缁熺殑鐢ㄩ +鑳藉杩涜绠鍗曠殑鍔犲噺涔橀櫎鐨勮绠楋紝瀛椾綋姣旇緝澶э紝鐣岄潰绠娲侊紝鏂逛究鑰佸勾浜轰娇鐢ㄣ #### 鍩烘湰鍔熻兘 璇︾粏浠嬬粛绯荤粺鍚勪釜妯″潡鐨勫姛鑳姐 -1. xxxx -2. xxxx -3. xxxx - - -#### 鐮佷簯鐗规妧 - -1. 浣跨敤 Readme\_XXX.md 鏉ユ敮鎸佷笉鍚岀殑璇█锛屼緥濡 Readme\_en.md, Readme\_zh.md -2. 鐮佷簯瀹樻柟鍗氬 [blog.gitee.com](https://blog.gitee.com) -3. 浣犲彲浠 [https://gitee.com/explore](https://gitee.com/explore) 杩欎釜鍦板潃鏉ヤ簡瑙g爜浜戜笂鐨勪紭绉寮婧愰」鐩 -4. [GVP](https://gitee.com/gvp) 鍏ㄧО鏄爜浜戞渶鏈変环鍊煎紑婧愰」鐩紝鏄爜浜戠患鍚堣瘎瀹氬嚭鐨勪紭绉寮婧愰」鐩 -5. 鐮佷簯瀹樻柟鎻愪緵鐨勪娇鐢ㄦ墜鍐 [https://gitee.com/help](https://gitee.com/help) -6. 鐮佷簯灏侀潰浜虹墿鏄竴妗g敤鏉ュ睍绀虹爜浜戜細鍛橀閲囩殑鏍忕洰 [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/) +1. 鈥 0123456789+-*/= 鈥 閿彲浠ヨ繘琛岀畝鍗曠殑涓や釜鏁扮殑璁$畻锛 +2. 鈥 姝h礋 鈥 閿繘琛屾璐熸暟浜掓崲锛 +3. 鈥 鍒犻櫎 鈥 閿繘琛岄鏍煎垹闄わ紱 +4. 鈥 寮鏂 鈥 閿繘琛屽紑鏂硅繍绠楋紱 +5. 鈥 鍊掓暟 鈥 閿繘琛屽掓暟杩愮畻锛 +6. 鈥 C 鈥 閿繘琛屾竻闆舵搷浣滐紱 +7. 鈥 CE 鈥 閿繘琛屾竻绌烘搷浣溿 -- Gitee From 7d8665d2ec8d05617fa776775867ff1b3cee056b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=91=E7=B1=B3?= <9115916+fytdjyguffxh66t78@user.noreply.gitee.com> Date: Thu, 10 Jun 2021 14:27:36 +0800 Subject: [PATCH 08/19] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20sr?= =?UTF-8?q?c/jsq=5Fzsl/=E7=AD=89=E4=BA=8E.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "src/jsq_zsl/\347\255\211\344\272\216.java" | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 "src/jsq_zsl/\347\255\211\344\272\216.java" diff --git "a/src/jsq_zsl/\347\255\211\344\272\216.java" "b/src/jsq_zsl/\347\255\211\344\272\216.java" deleted file mode 100644 index 5591c55..0000000 --- "a/src/jsq_zsl/\347\255\211\344\272\216.java" +++ /dev/null @@ -1,8 +0,0 @@ -package jsq_zsl; - -public class 等于 extends Jservice implements Operation { - @Override - public String callMethod(String cmd, String text) { - return call(text); - } -} -- Gitee From e9bca5eda57cddffa112991e2bae3f0ce2845e28 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=91=E7=B1=B3?= <9115916+fytdjyguffxh66t78@user.noreply.gitee.com> Date: Thu, 10 Jun 2021 14:45:18 +0800 Subject: [PATCH 09/19] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20sr?= =?UTF-8?q?c/jsq=5Fzsl/C.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/jsq_zsl/C.java | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 src/jsq_zsl/C.java diff --git a/src/jsq_zsl/C.java b/src/jsq_zsl/C.java deleted file mode 100644 index 1aac390..0000000 --- a/src/jsq_zsl/C.java +++ /dev/null @@ -1,8 +0,0 @@ -package jsq_zsl; - -public class C extends Jservice implements Operation { - @Override - public String callMethod(String cmd, String text) { - return clearAll(); - } -} -- Gitee From 6faa8d41865333b5dfb25fb98c17ba7d4e795e93 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=91=E7=B1=B3?= <9115916+fytdjyguffxh66t78@user.noreply.gitee.com> Date: Thu, 10 Jun 2021 14:45:27 +0800 Subject: [PATCH 10/19] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20sr?= =?UTF-8?q?c/jsq=5Fzsl/CE.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/jsq_zsl/CE.java | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 src/jsq_zsl/CE.java diff --git a/src/jsq_zsl/CE.java b/src/jsq_zsl/CE.java deleted file mode 100644 index 2c4364c..0000000 --- a/src/jsq_zsl/CE.java +++ /dev/null @@ -1,8 +0,0 @@ -package jsq_zsl; - -public class CE extends Jservice implements Operation { - @Override - public String callMethod(String cmd, String text) { - return clear(text); - } -} -- Gitee From a2c4a28c9e189d4c0b5187a85a5fe03d643d2bc7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=91=E7=B1=B3?= <9115916+fytdjyguffxh66t78@user.noreply.gitee.com> Date: Thu, 10 Jun 2021 14:45:33 +0800 Subject: [PATCH 11/19] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20sr?= =?UTF-8?q?c/jsq=5Fzsl/Operation.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/jsq_zsl/Operation.java | 5 ----- 1 file changed, 5 deletions(-) delete mode 100644 src/jsq_zsl/Operation.java diff --git a/src/jsq_zsl/Operation.java b/src/jsq_zsl/Operation.java deleted file mode 100644 index c139d4d..0000000 --- a/src/jsq_zsl/Operation.java +++ /dev/null @@ -1,5 +0,0 @@ -package jsq_zsl; - -public interface Operation { - String callMethod(String cmd, String text); -} -- Gitee From 4195701aa1d8940e91ec7ee9aeb82c71ff69e603 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=91=E7=B1=B3?= <9115916+fytdjyguffxh66t78@user.noreply.gitee.com> Date: Thu, 10 Jun 2021 14:45:37 +0800 Subject: [PATCH 12/19] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20sr?= =?UTF-8?q?c/jsq=5Fzsl/=E6=AD=A3=E8=B4=9F.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "src/jsq_zsl/\346\255\243\350\264\237.java" | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 "src/jsq_zsl/\346\255\243\350\264\237.java" diff --git "a/src/jsq_zsl/\346\255\243\350\264\237.java" "b/src/jsq_zsl/\346\255\243\350\264\237.java" deleted file mode 100644 index d5ed4a0..0000000 --- "a/src/jsq_zsl/\346\255\243\350\264\237.java" +++ /dev/null @@ -1,8 +0,0 @@ -package jsq_zsl; - -public class 正负 extends Jservice implements Operation { - @Override - public String callMethod(String cmd, String text) { - return setNegative(text); - } -} -- Gitee From 8554ca7846a5cbd78cfb556bbb74f30c5613fe0d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=91=E7=B1=B3?= <9115916+fytdjyguffxh66t78@user.noreply.gitee.com> Date: Thu, 10 Jun 2021 14:45:48 +0800 Subject: [PATCH 13/19] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20sr?= =?UTF-8?q?c/jsq=5Fzsl/=E5=BC=80=E6=96=B9.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "src/jsq_zsl/\345\274\200\346\226\271.java" | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 "src/jsq_zsl/\345\274\200\346\226\271.java" diff --git "a/src/jsq_zsl/\345\274\200\346\226\271.java" "b/src/jsq_zsl/\345\274\200\346\226\271.java" deleted file mode 100644 index bff88b1..0000000 --- "a/src/jsq_zsl/\345\274\200\346\226\271.java" +++ /dev/null @@ -1,8 +0,0 @@ -package jsq_zsl; - -public class 开方 extends Jservice implements Operation { - @Override - public String callMethod(String cmd, String text) { - return sqrt(text); - } -} -- Gitee From 70227b92ba949ba7412988edce24b15e56227f6a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=91=E7=B1=B3?= <9115916+fytdjyguffxh66t78@user.noreply.gitee.com> Date: Thu, 10 Jun 2021 14:45:59 +0800 Subject: [PATCH 14/19] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20sr?= =?UTF-8?q?c/jsq=5Fzsl/=E5=80=92=E6=95=B0.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "src/jsq_zsl/\345\200\222\346\225\260.java" | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 "src/jsq_zsl/\345\200\222\346\225\260.java" diff --git "a/src/jsq_zsl/\345\200\222\346\225\260.java" "b/src/jsq_zsl/\345\200\222\346\225\260.java" deleted file mode 100644 index f830398..0000000 --- "a/src/jsq_zsl/\345\200\222\346\225\260.java" +++ /dev/null @@ -1,8 +0,0 @@ -package jsq_zsl; - -public class 倒数 extends Jservice implements Operation { - @Override - public String callMethod(String cmd, String text) { - return setReciprocal(text); - } -} -- Gitee From 1e4f2aee780573ed56b6ee984619c0392aa153fc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=91=E7=B1=B3?= <9115916+fytdjyguffxh66t78@user.noreply.gitee.com> Date: Thu, 10 Jun 2021 14:46:03 +0800 Subject: [PATCH 15/19] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20sr?= =?UTF-8?q?c/jsq=5Fzsl/=E5=88=A0=E9=99=A4.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- "src/jsq_zsl/\345\210\240\351\231\244.java" | 8 -------- 1 file changed, 8 deletions(-) delete mode 100644 "src/jsq_zsl/\345\210\240\351\231\244.java" diff --git "a/src/jsq_zsl/\345\210\240\351\231\244.java" "b/src/jsq_zsl/\345\210\240\351\231\244.java" deleted file mode 100644 index 83779d6..0000000 --- "a/src/jsq_zsl/\345\210\240\351\231\244.java" +++ /dev/null @@ -1,8 +0,0 @@ -package jsq_zsl; - -public class 删除 extends Jservice implements Operation { - @Override - public String callMethod(String cmd, String text) { - return backSpace(text); - } -} -- Gitee From 74df0caf5fa02e9ce0d1ef846bb930e68ba1092a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=91=E7=B1=B3?= <9115916+fytdjyguffxh66t78@user.noreply.gitee.com> Date: Thu, 10 Jun 2021 14:46:09 +0800 Subject: [PATCH 16/19] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=20sr?= =?UTF-8?q?c/jsq=5Fzsl/OperatorFactory.java?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/jsq_zsl/OperatorFactory.java | 21 --------------------- 1 file changed, 21 deletions(-) delete mode 100644 src/jsq_zsl/OperatorFactory.java diff --git a/src/jsq_zsl/OperatorFactory.java b/src/jsq_zsl/OperatorFactory.java deleted file mode 100644 index dc10aaa..0000000 --- a/src/jsq_zsl/OperatorFactory.java +++ /dev/null @@ -1,21 +0,0 @@ -package jsq_zsl; -import java.util.HashMap; -import java.util.Map; - -public class OperatorFactory { - static Map operationMap = new HashMap<>(); - - static { - operationMap.put("C", new C()); - operationMap.put("CE", new CE()); - operationMap.put("删除", new 删除()); - operationMap.put("正负", new 正负()); - operationMap.put("倒数", new 倒数()); - operationMap.put("开方", new 开方()); - operationMap.put("=", new 等于()); - } - - public static Operation getOperation(String cmd) { - return operationMap.get(cmd); - } -} \ No newline at end of file -- Gitee From 7ea356475591743da38d48c664781731684dc460 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=91=E7=B1=B3?= <9115916+fytdjyguffxh66t78@user.noreply.gitee.com> Date: Thu, 10 Jun 2021 14:47:06 +0800 Subject: [PATCH 17/19] update src/jsq_zsl/Test.java. --- src/jsq_zsl/Test.java | 43 +++++++++++++++++++------------------------ 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/src/jsq_zsl/Test.java b/src/jsq_zsl/Test.java index a1a6600..88b4b47 100644 --- a/src/jsq_zsl/Test.java +++ b/src/jsq_zsl/Test.java @@ -10,34 +10,34 @@ public class Test extends JFrame { new Test(); } /** - * 设计计算器的窗口外观 + * 璁捐璁$畻鍣ㄧ殑绐楀彛澶栬 */ - private static final long serialVersionUID=1L;//实现序列化类的不同版本间的兼容性 + private static final long serialVersionUID=1L;//瀹炵幇搴忓垪鍖栫被鐨勪笉鍚岀増鏈棿鐨勫吋瀹规 private final static int MR_WIDTH = 500; - private final static int MR_HEIGHT = 600; //默认窗口宽度和高度 + private final static int MR_HEIGHT = 600; //榛樿绐楀彛瀹藉害鍜岄珮搴 private JTextField text = null; - private JButton button = null; //存储标记 + private JButton button = null; //瀛樺偍鏍囪 - private String[] a = {"7","8","9","/","开方","4","5","6","*","正负","1","2","3","-","倒数",".","0","+","=","删除"}; + private String[] a = {"7","8","9","/","寮鏂","4","5","6","*","姝h礋","1","2","3","-","鍊掓暟",".","0","+","=","鍒犻櫎"}; private String[] m = {"MC","MR","MS","M+"}; - private String[] c = {"CE","C"};//私有字符串按钮符号 + private String[] c = {"CE","C"};//绉佹湁瀛楃涓叉寜閽鍙 private Jservice service=new Jservice(); public Test(){ - this.setTitle("计算器DH"); //标题 + this.setTitle("璁$畻鍣―H"); //鏍囬 this.setSize(MR_WIDTH, MR_HEIGHT); this.setLocationRelativeTo(null); this.setResizable(false); - //添加底层 + //娣诲姞搴曞眰 JPanel panel = new JPanel(); panel.setLayout(new BorderLayout(10,1)); panel.add(getTextField(), BorderLayout.NORTH); panel.setPreferredSize(new Dimension(MR_WIDTH, MR_HEIGHT)); - //按钮符号设计与放置 + //鎸夐挳绗﹀彿璁捐涓庢斁缃 JButton[] mButton=getMButton(); JPanel panel1=new JPanel(); @@ -71,16 +71,16 @@ public class Test extends JFrame { this.setVisible(true); } - //文本显示框 + //鏂囨湰鏄剧ず妗 private JTextField getTextField() { text = new JTextField("0",50); text.setSize(500, 100); - Font font = new Font("微软雅黑", Font.PLAIN, 20); + Font font = new Font("寰蒋闆呴粦", Font.PLAIN, 20); text.setFont(font); return text; } - //数字、计算a按钮 + //鏁板瓧銆佽绠梐鎸夐挳 private JButton[] getNButton(){ String[] fButton= {"/","*","-","+","="}; JButton[] nbutton=new JButton[a.length]; @@ -91,19 +91,19 @@ public class Test extends JFrame { Arrays.parallelSort(fButton); if(Arrays.binarySearch(fButton, a[i])>=0) { b.setForeground(Color.red); - Font font = new Font("微软雅黑", Font.BOLD, 22);//创建1个字体实例 + Font font = new Font("寰蒋闆呴粦", Font.BOLD, 22);//鍒涘缓1涓瓧浣撳疄渚 b.setFont(font); } else { b.setForeground(Color.black); - Font font = new Font("微软雅黑", Font.BOLD, 20);//创建1个字体实例 + Font font = new Font("寰蒋闆呴粦", Font.BOLD, 20);//鍒涘缓1涓瓧浣撳疄渚 b.setFont(font); } nbutton[i]=b; } return nbutton; } - //操作健 + //鎿嶄綔鍋 private JButton[] getMButton(){ JButton[] mbutton = new JButton[m.length + 1]; mbutton[0] = getButton(); @@ -111,7 +111,7 @@ public class Test extends JFrame { JButton b = new JButton(this.m[i]); b.addActionListener(getActionListener()); b.setForeground(Color.BLUE); - Font font = new Font("微软雅黑", Font.PLAIN, 20);//创建1个字体实例 + Font font = new Font("寰蒋闆呴粦", Font.PLAIN, 20);//鍒涘缓1涓瓧浣撳疄渚 b.setFont(font); mbutton[i+1] = b; } @@ -123,7 +123,7 @@ public class Test extends JFrame { JButton b = new JButton(this.c[i]); b.addActionListener(getActionListener()); b.setForeground(Color.BLACK); - Font font = new Font("微软雅黑", Font.PLAIN, 20);//创建1个字体实例 + Font font = new Font("寰蒋闆呴粦", Font.PLAIN, 20);//鍒涘缓1涓瓧浣撳疄渚 b.setFont(font); rbutton[i] = b; } @@ -133,7 +133,7 @@ public class Test extends JFrame { button = new JButton(); return button; } - private ActionListener getActionListener(){ //监听器构造 + private ActionListener getActionListener(){ //鐩戝惉鍣ㄦ瀯閫 ActionListener actionListener = new ActionListener() { @Override @@ -146,17 +146,12 @@ public class Test extends JFrame { } catch (Exception e1) { System.out.println(e1.getMessage()); } - try { - result = service.cal(cmd, text.getText()); - } catch (Exception e2) { - System.out.println(e2.getMessage()); - } if(cmd.indexOf("MC") == 0){ button.setText(""); }else if(cmd.indexOf("M") == 0){ button.setText("M"); } - //显示计算结果 + //鏄剧ず璁$畻缁撴灉 if(result != null){ text.setText(result); } -- Gitee From f1a15b009715a776cd78ec6cb4fe33354db62923 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=91=E7=B1=B3?= <9115916+fytdjyguffxh66t78@user.noreply.gitee.com> Date: Thu, 10 Jun 2021 14:50:23 +0800 Subject: [PATCH 18/19] =?UTF-8?q?update=20src/jsq=5Fzsl/Jservice.java.=20?= =?UTF-8?q?=E5=B7=A5=E5=8E=82=E7=B1=BBbug=E6=97=A0=E6=B3=95=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E6=94=B9=E7=94=A8if=20else=E8=BF=9B=E8=A1=8C=E5=88=A4?= =?UTF-8?q?=E6=96=AD=E6=89=A7=E8=A1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/jsq_zsl/Jservice.java | 52 +++++++++++++++++++++++---------------- 1 file changed, 31 insertions(+), 21 deletions(-) diff --git a/src/jsq_zsl/Jservice.java b/src/jsq_zsl/Jservice.java index f8b2f36..b9a784a 100644 --- a/src/jsq_zsl/Jservice.java +++ b/src/jsq_zsl/Jservice.java @@ -9,10 +9,10 @@ public class Jservice { private double s; private String numString = "0123456789."; private String fhString = "+-*/"; - + public String catNum(String cmd, String text) { String result = cmd; - // 如果text不等于0 + // 濡傛灉text涓嶇瓑浜0 if (!"0".equals(text)) { if (theSecondNum) { theSecondNum = false; @@ -36,13 +36,14 @@ public class Jservice { } public String call(String text) { - double secondResult = secondNum == null ? Double.valueOf(text).doubleValue() : Double.valueOf(secondNum).doubleValue(); + double secondResult = secondNum == null ? Double.valueOf(text). + doubleValue() : Double.valueOf(secondNum).doubleValue(); - //除数为0的容错处理 + //闄ゆ暟涓0鐨勫閿欏鐞 if(secondResult == 0 && this.d.equals("/")){ - return "除数不能为0"; + return "闄ゆ暟涓嶈兘涓0"; } - //加减乘除,valueOf把基本类型转化为对象类型 + //鍔犲噺涔橀櫎 if(this.d.equals("+")){ firstNum = String.valueOf(MyMath.add(Double.valueOf(firstNum),secondResult)); } @@ -60,12 +61,12 @@ public class Jservice { this.theSecondNum = true; return firstNum; } - //求开方 + //姹傚紑鏂 public String sqrt(String text){ this.theSecondNum = true; return String.valueOf(Math.sqrt(Double.valueOf(text))); } - //求倒数 + //姹傚掓暟 public String setReciprocal(String text){ if (text.equals("0")){ return text; @@ -74,7 +75,7 @@ public class Jservice { return String.valueOf(MyMath.divide(1, Double.valueOf(text))); } } - //关于M键的存储 + //鍏充簬M閿殑瀛樺偍 public String mCmd(String cmd,String text){ if(cmd.equals("M+")){ s = MyMath.add(s, Double.valueOf(text)); @@ -88,11 +89,11 @@ public class Jservice { } return null; } - //删除键实现退格 + //鍒犻櫎閿疄鐜伴鏍 public String backSpace(String text){ return text.equals("0") || text.equals("") ? "0" :text.substring(0,text.length()-1); } - //正负号转换 + //姝h礋鍙疯浆鎹 public String setNegative(String text){ if(text.indexOf("-") == 0){ return text.substring(1,text.length()); @@ -101,30 +102,39 @@ public class Jservice { return "-" + text; } } - //C清0 + //C娓呴浂 public String clearAll(){ this.firstNum = "0"; this.secondNum = null; return this.firstNum; } - //CE清空 + //CE娓呯┖ public String clear(String text){ return "0"; } - - - //各个按钮对应实现的方法调用返回 + + //鍒ゆ柇鍚勪釜鎸夐挳锛岃皟鐢ㄥ搴斿疄鐜扮殑鏂规硶骞惰繑鍥炲 public String callMethod(String cmd, String text){ - - if (numString.indexOf(cmd) != -1) { + if(cmd.equals("C")){ + return clearAll(); + }else if(cmd.equals("CE")){ + return clear(text); + }else if (cmd.equals("鍒犻櫎")) { + return backSpace(text); + }else if (numString.indexOf(cmd) != -1) { return catNum(cmd, text); }else if (fhString.indexOf(cmd) != -1) { return setOp(cmd, text); + }else if (cmd.equals("姝h礋")) { + return setNegative(text); + }else if(cmd.equals("鍊掓暟")){ + return setReciprocal(text); + }else if (cmd.equals("寮鏂")) { + return sqrt(text); + }else if(cmd.equals("=")){ + return call(text); }else { return mCmd(cmd, text); - } } - public String cal( String cmd,String text) { - return OperatorFactory.getOperation(cmd).callMethod(cmd, text); } } -- Gitee From 0df2744307f0676520ff08a75acb6e420ec389f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=91=E7=B1=B3?= <9115916+fytdjyguffxh66t78@user.noreply.gitee.com> Date: Thu, 10 Jun 2021 14:52:41 +0800 Subject: [PATCH 19/19] update src/jsq_zsl/MyMath.java. --- src/jsq_zsl/MyMath.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/jsq_zsl/MyMath.java b/src/jsq_zsl/MyMath.java index 8d0b569..618eabe 100644 --- a/src/jsq_zsl/MyMath.java +++ b/src/jsq_zsl/MyMath.java @@ -5,27 +5,27 @@ import java.math.RoundingMode; public class MyMath { /** - * 为一个double类型创建BigDecimal对象,实现精确度计算 + * 涓轰竴涓猟ouble绫诲瀷鍒涘缓BigDecimal瀵硅薄,瀹炵幇绮剧‘搴﹁绠 */ private static BigDecimal getBigDecimal(double number){ return new BigDecimal(number); } - public static double add(double num1, double num2) { + public static double add(double num1, double num2) { //鍔犳硶 BigDecimal first = getBigDecimal(num1); BigDecimal second = getBigDecimal(num2); return first.add(second).doubleValue(); } - public static double subtract(double num1, double num2) { + public static double subtract(double num1, double num2) { //鍑忔硶 BigDecimal first = getBigDecimal(num1); BigDecimal second = getBigDecimal(num2); return first.subtract(second).doubleValue(); } - public static double multiply(double num1, double num2) { + public static double multiply(double num1, double num2) { //涔樻硶 BigDecimal first = getBigDecimal(num1); BigDecimal second = getBigDecimal(num2); return first.multiply(second).doubleValue(); } - public static double divide(double num1, double num2) { + public static double divide(double num1, double num2) { //闄ゆ硶 BigDecimal first = getBigDecimal(num1); BigDecimal second = getBigDecimal(num2); return first.divide(second,3,RoundingMode.HALF_UP).doubleValue(); -- Gitee