From 84094f571b500a47db2e02b232103441d89292e1 Mon Sep 17 00:00:00 2001 From: 86178 <86178@192.168.199.243> Date: Wed, 9 Jun 2021 10:31:53 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E5=85=B6=E5=AE=9E=E8=BF=99=E6=AC=A1?= =?UTF-8?q?=E5=BA=94=E8=AF=A5=E7=AE=97=E6=98=AF=E7=AC=AC=E5=9B=9B=E6=AC=A1?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E4=BA=86=EF=BC=8C=E4=B9=8B=E5=89=8D=E4=B8=80?= =?UTF-8?q?=E7=9B=B4=E6=8F=90=E4=BA=A4=E9=94=99=E4=BA=86=E3=80=82=E5=B7=B2?= =?UTF-8?q?=E7=BB=8F=E5=AE=9E=E7=8E=B0=E4=BA=86=E6=A0=87=E5=87=86=E5=9E=8B?= =?UTF-8?q?=E5=92=8C=E7=A7=91=E5=AD=A6=E5=9E=8B=E8=AE=A1=E7=AE=97=E5=99=A8?= =?UTF-8?q?=E9=99=A4=E4=BA=86=E8=AE=B0=E5=BF=86=E5=AD=98=E5=82=A8=E5=8A=9F?= =?UTF-8?q?=E8=83=BD=E5=85=B6=E4=BB=96=E7=9A=84=E6=89=80=E6=9C=89=E8=AE=A1?= =?UTF-8?q?=E7=AE=97=E5=8A=9F=E8=83=BD=20=E8=BF=98=E6=9C=89=E5=88=87?= =?UTF-8?q?=E6=8D=A2=E7=A7=91=E5=AD=A6=E5=9E=8B=E5=92=8C=E6=A0=87=E5=87=86?= =?UTF-8?q?=E5=9E=8B=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/java2020spring/calculatorFrame.java | 304 ++++++++++++++++++++++++ 1 file changed, 304 insertions(+) create mode 100644 src/java2020spring/calculatorFrame.java diff --git a/src/java2020spring/calculatorFrame.java b/src/java2020spring/calculatorFrame.java new file mode 100644 index 0000000..01a8677 --- /dev/null +++ b/src/java2020spring/calculatorFrame.java @@ -0,0 +1,304 @@ +package java2020spring; + +import java.awt.BorderLayout; +import java.awt.Button; +import java.awt.CardLayout; +import java.awt.Font; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; + +import javax.swing.*; + +public class calculatorFrame extends JFrame implements ActionListener { + JMenuBar menubar; + JMenu menu; + JMenuItem item1,item2; + JPanel panel,panel1,panel2; + CardLayout card; + JTextField text; + String operator=null,//记录运算符 + number=null,//记录数字 + ms=null;//记录存储数字 + boolean point=false,//判断是否已经有小数点了 + num=false;//判断是否按了加减乘除取余数运算符 + calculatorFrame(){ + setMenu(); + setText(); + card=new CardLayout(); + panel=new JPanel(); + panel.setLayout(card); + setCalculator1(); + setCalculator2(); + add(panel,BorderLayout.CENTER); + setBounds(100, 100, 400, 400); + setVisible(true); + setDefaultCloseOperation(DISPOSE_ON_CLOSE); + pack(); + } + public void setMenu() {//设计菜单 + menubar=new JMenuBar(); + menu=new JMenu("计算器类型"); + item1=new JMenuItem("标准计算器"); + item2=new JMenuItem("科学计算器"); + item1.addActionListener(this); + item2.addActionListener(this); + menu.add(item1); + menu.add(item2); + menubar.add(menu); + setJMenuBar(menubar); + } + public void setText() {//设计文本区 + text=new JTextField("0"); + text.setFont(new Font("楷体",Font.PLAIN, 20)); + text.setSize(400, 100); + text.setHorizontalAlignment(JTextField.RIGHT);//光标向右对齐 + text.setEditable(false); + add(text,BorderLayout.NORTH);//显示条有点小 + } + public void setCalculator1(){ //设置标准计算器的界面 + panel1=new JPanel(); + panel1.setLayout(new GridLayout(7,4)); + String buttonText[]= {"MC","MR","MS","M+","%","CE","C","删除","1/x","x^2","√x" + ,"/","7","8","9","X","4","5","6","-","1","2","3","+", + "+/-","0",".","="}; + for(int i=0;i Date: Wed, 9 Jun 2021 19:17:17 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E7=AC=AC=E4=BA=94=E6=AC=A1=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=E3=80=82=E5=AE=9E=E7=8E=B0=E4=BA=86MC=20MR=20MS=20M+?= =?UTF-8?q?=20M-=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/java2020spring/Test.java | 2 +- src/java2020spring/calculatorFrame.java | 104 +++++++++++++++++++++++- 2 files changed, 101 insertions(+), 5 deletions(-) diff --git a/src/java2020spring/Test.java b/src/java2020spring/Test.java index fc09c19..3182669 100644 --- a/src/java2020spring/Test.java +++ b/src/java2020spring/Test.java @@ -3,7 +3,7 @@ package java2020spring; public class Test { public static void main(String[] args) { - System.out.println("Hello world!"); + new calculatorFrame(); } diff --git a/src/java2020spring/calculatorFrame.java b/src/java2020spring/calculatorFrame.java index 01a8677..5905030 100644 --- a/src/java2020spring/calculatorFrame.java +++ b/src/java2020spring/calculatorFrame.java @@ -7,10 +7,12 @@ import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.awt.event.KeyEvent; +import java.awt.event.KeyListener; import javax.swing.*; -public class calculatorFrame extends JFrame implements ActionListener { +public class calculatorFrame extends JFrame implements ActionListener,KeyListener { JMenuBar menubar; JMenu menu; JMenuItem item1,item2; @@ -54,6 +56,7 @@ public class calculatorFrame extends JFrame implements ActionListener { text.setSize(400, 100); text.setHorizontalAlignment(JTextField.RIGHT);//光标向右对齐 text.setEditable(false); + text.addKeyListener(this); add(text,BorderLayout.NORTH);//显示条有点小 } public void setCalculator1(){ //设置标准计算器的界面 @@ -68,6 +71,7 @@ public class calculatorFrame extends JFrame implements ActionListener { button.addActionListener(this); panel1.add(button); } + panel1.addKeyListener(this); panel.add("1", panel1); } public void setCalculator2(){ //设置科学计算器的界面 @@ -82,8 +86,10 @@ public class calculatorFrame extends JFrame implements ActionListener { button.addActionListener(this); panel2.add(button); } + panel2.addKeyListener(this); panel.add("2", panel2); } + @Override public void actionPerformed(ActionEvent e) { @@ -111,7 +117,7 @@ public class calculatorFrame extends JFrame implements ActionListener { text.setText(str2); } - else if(str1=="+"||str1=="-"||str1=="X"||str1=="/"||str1=="%") { + else if(str1=="+"||str1=="-"||str1=="X"||str1=="/"||str1=="mod"||str1=="x^y") { if(operator==null) { operator=str1; number=str2; @@ -134,8 +140,35 @@ public class calculatorFrame extends JFrame implements ActionListener { point=true; number=null; } - else if(str1=="MC"||str1=="MR"||str1=="MS"||str1=="M+"||str1=="M-") {//记忆存储功能 - + if(str1=="MC") {//记忆清空 + ms=null; + } + else if(str1=="MR") {//记忆读出 + if(ms==null) { + str2="记忆为空!请按C清零"; + } + else { + text.setText(ms); + } + } + else if(str1=="MS") {//记忆存储 + ms=str2; + } + else if(str1=="M+") { + if(ms==null) { + ms=str2; + } + else { + ms=String.valueOf(Double.parseDouble(ms)+Double.parseDouble(str2)); + } + } + else if(str1=="M-") { + if(ms==null) { + ms=str2; + } + else { + ms=String.valueOf(Double.parseDouble(ms)-Double.parseDouble(str2)); + } } else if(str1.equals("标准计算器")) {//切换页面 card.show(panel, "1"); @@ -301,4 +334,67 @@ public class calculatorFrame extends JFrame implements ActionListener { } return a; } + public String calculateM(String str1,String str2) { + + return str2; + } + @Override + public void keyTyped(KeyEvent e) { + + + } + @Override + public void keyPressed(KeyEvent e) { + int c=e.getKeyCode(); + String str1=String.valueOf(e.getKeyChar()), + str2=text.getText(); + System.out.println(str1); + System.out.println(c); + if(str1=="0"||str1=="1"||str1=="2"||str1=="3"||str1=="4"||str1=="5" + ||str1=="6"||str1=="7"||str1=="8"||str1=="9") { + if(num==true) {//输入另一个数 + text.setText(str1); + num=false; + } + else { + if(str2.compareTo("0")==0) {//str2=="0"判断文本区开头为零判断不出来,为什么? + //换了个方法可以了,忽然意识到字符串比对好像都是用equal方法的。。。算了,能用就不改了 + text.setText(str1);} + else { + text.setText(str2+str1);} + } + } + else if(str1=="."||c==KeyEvent.VK_DELETE) { + str2=calculate1(str1,str2); + text.setText(str2); + } + else if(str1=="+"||str1=="-"||str1=="*"||str1=="/") { + if(operator==null) { + operator=str1; + number=str2; + point=false; + num=true; + } + else{ + str2=calculate2(str2); + text.setText(str2); + operator=str1; + point=true; + number=str2; + num=true; + } + } + else if(str1=="=") { + str2=calculate2(str2); + text.setText(str2); + operator=null; + point=true; + number=null; + } + } + @Override + public void keyReleased(KeyEvent e) { + // TODO 自动生成的方法存根 + + } } -- Gitee From aad1f17c72cd7992c58a6926d97f468ad9b090ff Mon Sep 17 00:00:00 2001 From: 86178 <86178@LAPTOP-O5E949M9> Date: Thu, 10 Jun 2021 00:33:38 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E7=AC=AC=E5=85=AD=E6=AC=A1=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=EF=BC=9A=E4=BF=AE=E6=AD=A3=E4=BA=86=E4=B8=80=E4=B8=AA?= =?UTF-8?q?=E5=87=BA=E7=8E=B0=E6=96=87=E5=AD=97=E5=90=8E=E5=86=8D=E6=8C=89?= =?UTF-8?q?=E8=BF=90=E7=AE=97=E7=AC=A6=E4=BE=9D=E7=84=B6=E6=89=A7=E8=A1=8C?= =?UTF-8?q?=E7=9A=84=E9=94=99=E8=AF=AF=EF=BC=8C=E4=BB=A5=E5=8F=8A=E6=8C=89?= =?UTF-8?q?=E4=BA=86+/-=E5=90=8E=E8=83=BD=E5=8A=A0=E5=B0=8F=E6=95=B0?= =?UTF-8?q?=E7=82=B9=E7=9A=84=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2020spring/calculatorFrame.java | 419 +++++++++++------------- 1 file changed, 190 insertions(+), 229 deletions(-) diff --git a/src/java2020spring/calculatorFrame.java b/src/java2020spring/calculatorFrame.java index 5905030..50087c5 100644 --- a/src/java2020spring/calculatorFrame.java +++ b/src/java2020spring/calculatorFrame.java @@ -1,18 +1,15 @@ package java2020spring; import java.awt.BorderLayout; -import java.awt.Button; import java.awt.CardLayout; import java.awt.Font; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.awt.event.KeyEvent; -import java.awt.event.KeyListener; import javax.swing.*; -public class calculatorFrame extends JFrame implements ActionListener,KeyListener { +public class calculatorFrame extends JFrame implements ActionListener { JMenuBar menubar; JMenu menu; JMenuItem item1,item2; @@ -20,10 +17,11 @@ public class calculatorFrame extends JFrame implements ActionListener,KeyListene CardLayout card; JTextField text; String operator=null,//记录运算符 - number=null,//记录数字 - ms=null;//记录存储数字 + number=null,//记录数字 + ms=null;//记录存储数字 boolean point=false,//判断是否已经有小数点了 - num=false;//判断是否按了加减乘除取余数运算符 + num=false,//判断是否按了加减乘除取余数运算符 + error=false;//判断是否出现运算错误 calculatorFrame(){ setMenu(); setText(); @@ -56,7 +54,6 @@ public class calculatorFrame extends JFrame implements ActionListener,KeyListene text.setSize(400, 100); text.setHorizontalAlignment(JTextField.RIGHT);//光标向右对齐 text.setEditable(false); - text.addKeyListener(this); add(text,BorderLayout.NORTH);//显示条有点小 } public void setCalculator1(){ //设置标准计算器的界面 @@ -65,13 +62,13 @@ public class calculatorFrame extends JFrame implements ActionListener,KeyListene String buttonText[]= {"MC","MR","MS","M+","%","CE","C","删除","1/x","x^2","√x" ,"/","7","8","9","X","4","5","6","-","1","2","3","+", "+/-","0",".","="}; + JButton button[] = new JButton[buttonText.length]; for(int i=0;i Date: Thu, 10 Jun 2021 16:25:54 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E7=AC=AC=E4=B8=83=E6=AC=A1=E6=8F=90?= =?UTF-8?q?=E4=BA=A4=EF=BC=88=E7=8E=B0=E5=9C=A8=E7=9A=84=E7=AC=AC=E5=9B=9B?= =?UTF-8?q?=E6=AC=A1=EF=BC=89=EF=BC=9A=E4=BF=AE=E6=94=B9=E4=BA=86=E4=B8=80?= =?UTF-8?q?=E4=BA=9B=E8=BF=90=E8=A1=8C=E9=94=99=E8=AF=AF=EF=BC=8C=E5=A6=82?= =?UTF-8?q?=E5=87=BA=E7=8E=B0=E6=96=87=E5=AD=97=E5=90=8E=E6=8C=89CE?= =?UTF-8?q?=E5=86=8D=E8=BF=9E=E7=BB=AD=E4=B8=A4=E6=AC=A1=E8=BF=90=E7=AE=97?= =?UTF-8?q?=E7=AC=A6=E4=BC=9A=E6=8A=8A=E5=AD=97=E7=AC=A6=E4=B8=B2=E6=8B=BF?= =?UTF-8?q?=E5=8E=BB=E8=AE=A1=E7=AE=97=E7=9A=84=E9=94=99=E8=AF=AF=EF=BC=88?= =?UTF-8?q?=E5=8D=B3=20=E5=87=BA=E7=8E=B0=E6=96=87=E5=AD=97=E5=90=8E?= =?UTF-8?q?=EF=BC=8C=E7=A6=81=E7=94=A8=E4=BA=86CE=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=8C=E5=8F=AA=E4=BF=9D=E7=95=99=E4=BA=86=E8=BE=93=E5=85=A5?= =?UTF-8?q?=E6=95=B0=E5=AD=97=E5=92=8CC=E7=9A=84=E5=8A=9F=E8=83=BD?= =?UTF-8?q?=EF=BC=89=E3=80=82=E8=BF=99=E4=B8=AA=E5=B7=B2=E7=BB=8F=E6=98=AF?= =?UTF-8?q?=E6=9C=80=E7=BB=88=E5=AE=8C=E6=88=90=E7=89=88=E4=BA=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2020spring/calculatorFrame.java | 83 +++++++++++++------------ 1 file changed, 43 insertions(+), 40 deletions(-) diff --git a/src/java2020spring/calculatorFrame.java b/src/java2020spring/calculatorFrame.java index 50087c5..a4e6913 100644 --- a/src/java2020spring/calculatorFrame.java +++ b/src/java2020spring/calculatorFrame.java @@ -22,7 +22,8 @@ public class calculatorFrame extends JFrame implements ActionListener { boolean point=false,//判断是否已经有小数点了 num=false,//判断是否按了加减乘除取余数运算符 error=false;//判断是否出现运算错误 - calculatorFrame(){ + + calculatorFrame(){//计算器总页面 setMenu(); setText(); card=new CardLayout(); @@ -36,6 +37,7 @@ public class calculatorFrame extends JFrame implements ActionListener { setDefaultCloseOperation(DISPOSE_ON_CLOSE); pack(); } + public void setMenu() {//设计菜单 menubar=new JMenuBar(); menu=new JMenu("计算器类型"); @@ -48,14 +50,16 @@ public class calculatorFrame extends JFrame implements ActionListener { menubar.add(menu); setJMenuBar(menubar); } + public void setText() {//设计文本区 text=new JTextField("0"); text.setFont(new Font("楷体",Font.PLAIN, 20)); text.setSize(400, 100); text.setHorizontalAlignment(JTextField.RIGHT);//光标向右对齐 text.setEditable(false); - add(text,BorderLayout.NORTH);//显示条有点小 + add(text,BorderLayout.NORTH); } + public void setCalculator1(){ //设置标准计算器的界面 panel1=new JPanel(); panel1.setLayout(new GridLayout(7,4)); @@ -71,6 +75,7 @@ public class calculatorFrame extends JFrame implements ActionListener { } panel.add("1", panel1); } + public void setCalculator2(){ //设置科学计算器的界面 panel2=new JPanel(); panel2.setLayout(new GridLayout(8,5)); @@ -88,19 +93,19 @@ public class calculatorFrame extends JFrame implements ActionListener { @Override public void actionPerformed(ActionEvent e) { - - String str1=e.getActionCommand(), - str2=text.getText();// + String str1=e.getActionCommand(),//判断按下了哪个键 + str2=text.getText();//获取文本框的文本 if(str1=="0"||str1=="1"||str1=="2"||str1=="3"||str1=="4"||str1=="5" ||str1=="6"||str1=="7"||str1=="8"||str1=="9") { if(num==true) {//输入另一个数 text.setText(str1); + point=false; num=false; error=false; } else { - if(str2.compareTo("0")==0) {//str2=="0"判断文本区开头为零判断不出来,为什么? - //换了个方法可以了,忽然意识到字符串比对好像都是用equal方法的。。。算了,能用就不改了 + //str2=="0"判断文本区开头为零判断不出来,为什么?换了个方法可以了,忽然意识到字符串比对好像都是用equal方法的。。。算了,能用就不改了 + if(str2.equals("0")) { text.setText(str1);} else { text.setText(str2+str1);} @@ -113,12 +118,11 @@ public class calculatorFrame extends JFrame implements ActionListener { str2=calculate1(str1,str2); text.setText(str2); } - if(error==false) { + if(error==false) {//判断文本框是不是有错误信息,有就不执行语句 if(str1=="+"||str1=="-"||str1=="X"||str1=="/"||str1=="mod"||str1=="x^y") { if(operator==null) { operator=str1; number=str2; - point=false; num=true; } else{ @@ -141,9 +145,12 @@ public class calculatorFrame extends JFrame implements ActionListener { if(str1=="MC") {//记忆清空 ms=null; } - else if(str1=="MR") {//记忆读出 + else if(str1=="MR") {//记忆读出,读出的数据有小数点,point记得设为true if(ms==null) {} else { + if(ms.contains(".")) { + point=true; + } text.setText(ms); } } @@ -167,15 +174,12 @@ public class calculatorFrame extends JFrame implements ActionListener { } } } + if(str1.equals("标准计算器")) {//切换页面 card.show(panel, "1"); - repaint(); - pack(); } else if(str1.equals("科学计算器")) { card.show(panel, "2"); - repaint(); - pack(); } } @@ -188,15 +192,14 @@ public class calculatorFrame extends JFrame implements ActionListener { else if(str1==".") { if(point==false) { str2=str2+str1; - point=true;//算完后要记得把其改为true + point=true;//有时算完后要把其改为true } } else if(str1=="删除") { - //要检查文本为空时,但文本删完了,按这个按键还是会显示错误,那么当删除完的时候str2都不是null和“” - //这两个字符,那要通过什么来不执行这个操作呢 。。。检测str2的长度就行了 + //要检查文本为空时,检测str2的长度就行了 if(str2.length()!=1){ - if(str2.endsWith("."))//判断是否删除了小数点,但算出的结果可以加小数点就有点头疼,怎么改呢 - point=false; //将每次算出结果后的point都设为true + if(str2.endsWith("."))//判断是否删除了小数点 + point=false; str2=str2.substring(0, str2.length()-1); } else if(str2.length()==1) { @@ -212,7 +215,7 @@ public class calculatorFrame extends JFrame implements ActionListener { if(a<0) { str2="被开方数不能为负数!请按C清零"; num=true; - error=true; + error=true;//会出现非数字字符的都把error设为true } else { str2=String.valueOf(Math.sqrt(a)); @@ -235,23 +238,23 @@ public class calculatorFrame extends JFrame implements ActionListener { str2=String.valueOf(Double.parseDouble(str2)/100); point=true; } - else if(str1=="sin") {// + else if(str1=="sin") {//sin str2=String.valueOf(Math.sin(Double.parseDouble(str2))); point=true; } - else if(str1=="cos") {// + else if(str1=="cos") {//cos str2=String.valueOf(Math.cos(Double.parseDouble(str2))); point=true; } - else if(str1=="tan") {// + else if(str1=="tan") {//tan str2=String.valueOf(Math.tan(Double.parseDouble(str2))); point=true; } - else if(str1=="PI") {// + else if(str1=="PI") {//直接将 PI 的值放去文本区 str2=String.valueOf(Math.PI); point=true; } - else if(str1=="10^x") {// + else if(str1=="10^x") {//求10的几次方 str2=String.valueOf(Math.pow(10, Double.parseDouble(str2))); point=true; } @@ -274,23 +277,23 @@ public class calculatorFrame extends JFrame implements ActionListener { num=true; error=true; } - else { + else {//Java的Math里的log是求自然对数的意思 str2=String.valueOf(Math.log(Double.parseDouble(str2))); point=true; } } - else if(str1=="e") {// + else if(str1=="e") {//直接设e的值 str2=String.valueOf(Math.E); point=true; } - else if(str1=="|x|") {// + else if(str1=="|x|") {//求绝对值 str2=String.valueOf(Math.abs(Double.parseDouble(str2))); point=true; } - else if(str1=="n!") {// + else if(str1=="n!") {//求n的阶乘 int a=(int)Double.parseDouble(str2), n=1; - if(a<=0) { + if(a<0) {//注意0的阶乘也是1! str2="阶乘必须要正整数,请按C清零"; num=true; error=true; @@ -303,20 +306,20 @@ public class calculatorFrame extends JFrame implements ActionListener { } point=false; } + if(str1=="CE") { + str2="0"; + point=false; + error=false; + } } - if(str1=="CE") { - str2="0"; - point=false; - error=false; - } - else if(str1=="C") { + if(str1=="C") { str2="0"; number=null; point=false; operator=null; error=false; } - + return str2; } @@ -337,7 +340,7 @@ public class calculatorFrame extends JFrame implements ActionListener { } else if(operator=="/") { double b=Double.parseDouble(a); - if(b==0) { + if(b==0) {//检查除数是否为零 a="除数不能为零!请按C清零"; num=true; error=true; @@ -347,11 +350,11 @@ public class calculatorFrame extends JFrame implements ActionListener { a=String.valueOf(result); } } - else if(operator=="mod") { + else if(operator=="mod") {//取余数 result=Double.parseDouble(number)%Double.parseDouble(a); a=String.valueOf(result); } - else if(operator=="x^y") { + else if(operator=="x^y") {//x的y次方 result=Math.pow(Double.parseDouble(number), Double.parseDouble(a)); a=String.valueOf(result); } -- Gitee From d11f223aee34694d9fb79ed03fb775e52fd20e08 Mon Sep 17 00:00:00 2001 From: 86178 <86178@LAPTOP-O5E949M9> Date: Thu, 10 Jun 2021 16:36:37 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E7=8E=B0=E5=9C=A8=E7=9A=84=E7=AC=AC?= =?UTF-8?q?=E4=BA=94=E6=AC=A1=EF=BC=88=E7=AE=97=E4=B8=8A=E4=B9=8B=E5=89=8D?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E9=94=99=E4=BA=86=E7=9A=84=E6=98=AF=E7=AC=AC?= =?UTF-8?q?=E5=85=AB=E6=AC=A1=EF=BC=89=EF=BC=9A=E5=8F=91=E7=8E=B0=E5=BF=98?= =?UTF-8?q?=E8=AE=B0=E5=9C=A8=E4=B8=80=E4=B8=AA=E6=95=B0=E8=BF=90=E7=AE=97?= =?UTF-8?q?=E7=9A=84=E6=80=BB=E5=88=A4=E6=96=AD=E9=87=8C=E5=8A=A0=E4=B8=8A?= =?UTF-8?q?=E2=80=9C%=E2=80=9D=E7=9A=84=E5=88=A4=E6=96=AD=EF=BC=8C?= =?UTF-8?q?=E5=AF=BC=E8=87=B4=E2=80=9C%=E2=80=9D=E7=9A=84=E6=8C=89?= =?UTF-8?q?=E9=94=AE=E6=97=A0=E5=8F=8D=E5=BA=94=20=E7=8E=B0=E5=B7=B2?= =?UTF-8?q?=E4=BF=AE=E5=A5=BD=E3=80=82=E7=9C=9F=E7=9A=84=E6=98=AF=E6=9C=80?= =?UTF-8?q?=E5=90=8E=E4=B8=80=E7=89=88=E4=BA=86=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2020spring/calculatorFrame.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/java2020spring/calculatorFrame.java b/src/java2020spring/calculatorFrame.java index a4e6913..8c529f4 100644 --- a/src/java2020spring/calculatorFrame.java +++ b/src/java2020spring/calculatorFrame.java @@ -104,7 +104,7 @@ public class calculatorFrame extends JFrame implements ActionListener { error=false; } else { - //str2=="0"判断文本区开头为零判断不出来,为什么?换了个方法可以了,忽然意识到字符串比对好像都是用equal方法的。。。算了,能用就不改了 +//str2=="0"判断文本区开头为零判断不出来,为什么?换了个方法可以了,忽然意识到字符串比对好像都是用equal方法的。。。算了,能用就不改了 if(str2.equals("0")) { text.setText(str1);} else { @@ -112,7 +112,7 @@ public class calculatorFrame extends JFrame implements ActionListener { } } else if(str1=="+/-"||str1=="."||str1=="CE"||str1=="C"||str1=="删除" - ||str1=="x^2"||str1=="√x"||str1=="1/x"||str1=="sin"||str1=="cos" + ||str1=="x^2"||str1=="√x"||str1=="1/x"||str1=="%"||str1=="sin"||str1=="cos" ||str1=="tan"||str1=="PI"||str1=="10^x"||str1=="lg" ||str1=="ln"||str1=="e"||str1=="|x|"||str1=="n!") { str2=calculate1(str1,str2); -- Gitee From 49bf085f1e582a5f0f861e89c13c78448a1bfb90 Mon Sep 17 00:00:00 2001 From: 86178 <86178@LAPTOP-O5E949M9> Date: Thu, 10 Jun 2021 16:52:57 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E7=8E=B0=E5=9C=A8=E7=9A=84=E7=AC=AC?= =?UTF-8?q?=E5=85=AD=E6=AC=A1=EF=BC=88=E7=AE=97=E4=B8=8A=E4=B9=8B=E5=89=8D?= =?UTF-8?q?=E6=8F=90=E4=BA=A4=E9=94=99=E4=BA=86=E7=9A=84=E6=98=AF=E7=AC=AC?= =?UTF-8?q?=E4=B9=9D=E6=AC=A1=EF=BC=89=EF=BC=9A=E5=8F=91=E7=8E=B0=E5=8F=96?= =?UTF-8?q?=E4=BD=99=E6=95=B0=E6=97=B6=E7=9A=84=E9=99=A4=E6=95=B0=E4=B8=8D?= =?UTF-8?q?=E8=83=BD=E4=B8=BA=E9=9B=B6=E8=BF=99=E4=B8=AA=E6=B2=A1=E6=9C=89?= =?UTF-8?q?=E5=88=A4=E6=96=AD=EF=BC=8C=E5=B7=B2=E4=BF=AE=E6=94=B9=E3=80=82?= =?UTF-8?q?=E5=B8=8C=E6=9C=9B=E8=BF=99=E7=9C=9F=E7=9A=84=E6=98=AF=20?= =?UTF-8?q?=E7=BB=88=E6=9E=81=E7=89=88=E4=BA=86orz=20=E5=B8=8C=E6=9C=9B?= =?UTF-8?q?=E4=B8=8D=E4=BC=9A=E5=86=8D=E6=9C=89=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2020spring/calculatorFrame.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/java2020spring/calculatorFrame.java b/src/java2020spring/calculatorFrame.java index 8c529f4..c6c5875 100644 --- a/src/java2020spring/calculatorFrame.java +++ b/src/java2020spring/calculatorFrame.java @@ -351,8 +351,17 @@ public class calculatorFrame extends JFrame implements ActionListener { } } else if(operator=="mod") {//取余数 - result=Double.parseDouble(number)%Double.parseDouble(a); + double b=Double.parseDouble(a); + if(b==0) {//检查除数是否为零 + a="取余数时的除数不能为零!请按C清零"; + num=true; + error=true; + } + else { + result=Double.parseDouble(number)%Double.parseDouble(a); a=String.valueOf(result); + } + } else if(operator=="x^y") {//x的y次方 result=Math.pow(Double.parseDouble(number), Double.parseDouble(a)); -- Gitee