From 6cf066f6da4070e5ac06d0903d050293b073ee8c Mon Sep 17 00:00:00 2001 From: yang <2609794429@qq.com> Date: Mon, 23 May 2022 19:17:59 +0800 Subject: [PATCH 1/9] test --- src/java2022spring/Test.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/java2022spring/Test.java b/src/java2022spring/Test.java index 24deb29..5b9eaf9 100644 --- a/src/java2022spring/Test.java +++ b/src/java2022spring/Test.java @@ -2,6 +2,7 @@ package java2022spring; public class Test { public static void main(String[] args) { - System.out.println("Hello world!"); + System.out.println("Hello world!yyy"); + System.out.println("hello world!!!"); } } -- Gitee From d7460c226ecfbfa054c597a6e6521ca797b7af60 Mon Sep 17 00:00:00 2001 From: yang <2609794429@qq.com> Date: Sat, 28 May 2022 00:27:20 +0800 Subject: [PATCH 2/9] =?UTF-8?q?=E5=AE=8C=E6=88=90=E4=BA=86=E7=95=8C?= =?UTF-8?q?=E9=9D=A2=E7=9A=84=E5=B8=83=E5=B1=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/MainWindow.java | 8 ++++++++ src/java2022spring/Test.java | 8 -------- 2 files changed, 8 insertions(+), 8 deletions(-) create mode 100644 src/java2022spring/MainWindow.java delete mode 100644 src/java2022spring/Test.java diff --git a/src/java2022spring/MainWindow.java b/src/java2022spring/MainWindow.java new file mode 100644 index 0000000..ce10d95 --- /dev/null +++ b/src/java2022spring/MainWindow.java @@ -0,0 +1,8 @@ +package java2022spring; +import javax.swing.*; +import java.awt.*; +public class MainWindow { + public static void main(String args[]) { + WindowUI win=new WindowUI("计算器",600,200,400,400); + } +} diff --git a/src/java2022spring/Test.java b/src/java2022spring/Test.java deleted file mode 100644 index 5b9eaf9..0000000 --- a/src/java2022spring/Test.java +++ /dev/null @@ -1,8 +0,0 @@ -package java2022spring; - -public class Test { - public static void main(String[] args) { - System.out.println("Hello world!yyy"); - System.out.println("hello world!!!"); - } -} -- Gitee From 7ed87c6cf707bc7aee1fa06a85309626c623d8b7 Mon Sep 17 00:00:00 2001 From: yang <2609794429@qq.com> Date: Sun, 29 May 2022 01:36:50 +0800 Subject: [PATCH 3/9] =?UTF-8?q?=E5=A4=9A=E4=BD=8D=E6=95=B0=E7=9A=84?= =?UTF-8?q?=E6=98=BE=E7=A4=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/WindowUI.java | 70 ++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) create mode 100644 src/java2022spring/WindowUI.java diff --git a/src/java2022spring/WindowUI.java b/src/java2022spring/WindowUI.java new file mode 100644 index 0000000..2c3eb79 --- /dev/null +++ b/src/java2022spring/WindowUI.java @@ -0,0 +1,70 @@ +package java2022spring; +import javax.swing.*; +import java.awt.*; +import java.awt.event.*; +public class WindowUI extends JFrame implements ActionListener{ + JTextArea text1= new JTextArea();//用于放置表达式 + JTextArea text2=new JTextArea();//用于放置结果 + JButton button[]=new JButton[19]; //用于设置按键 + public WindowUI(String s,int x,int y,int w,int h) { //设置窗口 + init(s); + WindowKey(); + setLocation(x,y); + setSize(w,h); + setVisible(true); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + } + void init(String s) {//设置菜单 + setTitle(s); + JMenuBar menubar=new JMenuBar(); //创建菜单条 + JMenu menu1=new JMenu("切换模式"); + JMenu menu2=new JMenu("菜单"); + menubar.add(menu2); + menubar.add(menu1); + setJMenuBar(menubar); //插入菜单条 + } + public void WindowKey() { + JSplitPane p1=new JSplitPane(JSplitPane.VERTICAL_SPLIT,text1,text2);//拆分窗格添加文本框 + JPanel p2=new JPanel(); + text1.setPreferredSize(new Dimension(380,40)); + text2.setPreferredSize(new Dimension(380,40));//设置文本框大小 + text2.setEditable(false);//设置文本框不可编辑 + text1.setEditable(false); + this.add(p1,BorderLayout.NORTH); //加入p1 + p2.setLayout(new GridLayout(5,4)); //网格布局 + button[0]=new JButton("x"); + button[1]=new JButton("÷"); + button[2]=new JButton("C"); + button[3]=new JButton("退格"); + button[4]=new JButton("7"); + button[5]=new JButton("8"); + button[6]=new JButton("9"); + button[7]=new JButton("-"); + button[8]=new JButton("4"); + button[9]=new JButton("5"); + button[10]=new JButton("6"); + button[11]=new JButton("+"); + button[12]=new JButton("1"); + button[13]=new JButton("2"); + button[14]=new JButton("3"); + button[15]=new JButton("="); + button[16]=new JButton("%"); + button[17]=new JButton("0"); + button[18]=new JButton("."); + for(int i=0;i Date: Mon, 30 May 2022 21:21:33 +0800 Subject: [PATCH 4/9] =?UTF-8?q?=E9=99=A4=E7=AD=89=E4=BA=8E=E5=8F=B7?= =?UTF-8?q?=E5=A4=96=E6=AF=8F=E4=B8=AA=E6=8C=89=E9=94=AE=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E4=BA=86=E5=AF=B9=E5=BA=94=E5=8F=8D=E5=BA=94=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/MainWindow.java | 2 +- src/java2022spring/WindowUI.java | 43 +++++++++++++++++++++++++++--- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/src/java2022spring/MainWindow.java b/src/java2022spring/MainWindow.java index ce10d95..67a4da0 100644 --- a/src/java2022spring/MainWindow.java +++ b/src/java2022spring/MainWindow.java @@ -3,6 +3,6 @@ import javax.swing.*; import java.awt.*; public class MainWindow { public static void main(String args[]) { - WindowUI win=new WindowUI("计算器",600,200,400,400); + WindowUI win=new WindowUI("计算器",600,200,400,400);//设置窗口 } } diff --git a/src/java2022spring/WindowUI.java b/src/java2022spring/WindowUI.java index 2c3eb79..d5a3f6c 100644 --- a/src/java2022spring/WindowUI.java +++ b/src/java2022spring/WindowUI.java @@ -1,5 +1,7 @@ package java2022spring; import javax.swing.*; +import java.util.Stack; +import java.util.Arrays; import java.awt.*; import java.awt.event.*; public class WindowUI extends JFrame implements ActionListener{ @@ -32,10 +34,10 @@ public class WindowUI extends JFrame implements ActionListener{ text1.setEditable(false); this.add(p1,BorderLayout.NORTH); //加入p1 p2.setLayout(new GridLayout(5,4)); //网格布局 - button[0]=new JButton("x"); + button[0]=new JButton("×"); button[1]=new JButton("÷"); button[2]=new JButton("C"); - button[3]=new JButton("退格"); + button[3]=new JButton("←"); button[4]=new JButton("7"); button[5]=new JButton("8"); button[6]=new JButton("9"); @@ -63,8 +65,41 @@ public class WindowUI extends JFrame implements ActionListener{ String regex="[1234567890]"; //正则表达式 if( str.matches(regex) ){ num=text1.getText(); - text1.setText(num+str); //多位数输入 + text1.setText(num+str); //实现多位数 + } + if(str.equals(".")) { + num=text1.getText(); + if(!num.contains(".")) {//不能连续输入小数点,但有个问题,不能两个小数相加。第二个小数的小数点无法输入。 + text1.setText(num+"."); + } + else { + text2.setText("请勿重复输入小数点");//尝试try和catch抛出异常弹出提示框 + + } + } + if(str.equals("+")||str.equals("-")||str.equals("×")||str.equals("÷")||str.equals("%")) { + num=text1.getText(); + char lastc=num.charAt(num.length()-1);//lastc为num的最后一个字符 + String lasts=String.valueOf(lastc);//强制转换类型为String来匹配正则表达式 + if(lasts.matches(regex)) {//判断num末尾是否是数字 + text1.setText(num+str); + } + else { + text2.setText("数学错误"); + } + } + if(str.equals("C")) {//设置清零键 + text1.setText(null); + } + if(str.equals("←")) { + num=text1.getText(); + char[] c=num.toCharArray();//num转化为字符数组c + String newnum=new String(c,0,c.length-1);//用字符数组c的0~倒数第二个字符创建新的字符串,即按下“←”之后的新字符串 + text1.setText(newnum); + } + if(str.equals("=")) { + num=text1.getText(); + text2.setText(num);//表达式上移 } - } } -- Gitee From 7950a235444569afbacbc07d58767482cadd0728 Mon Sep 17 00:00:00 2001 From: yang <2609794429@qq.com> Date: Wed, 1 Jun 2022 00:42:04 +0800 Subject: [PATCH 5/9] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=AF=B9=E8=A1=A8?= =?UTF-8?q?=E8=BE=BE=E5=BC=8F=E4=BB=A5=E9=9D=9E=E6=95=B0=E5=AD=97=E7=AC=A6?= =?UTF-8?q?=E5=8F=B7=E4=B8=BA=E5=88=86=E9=9A=94=E6=A0=87=E8=AE=B0=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E5=88=86=E5=89=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/WindowUI.java | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/java2022spring/WindowUI.java b/src/java2022spring/WindowUI.java index d5a3f6c..a827fac 100644 --- a/src/java2022spring/WindowUI.java +++ b/src/java2022spring/WindowUI.java @@ -4,6 +4,7 @@ import java.util.Stack; import java.util.Arrays; import java.awt.*; import java.awt.event.*; +import java.util.*; public class WindowUI extends JFrame implements ActionListener{ JTextArea text1= new JTextArea();//用于放置表达式 JTextArea text2=new JTextArea();//用于放置结果 @@ -77,7 +78,7 @@ public class WindowUI extends JFrame implements ActionListener{ } } - if(str.equals("+")||str.equals("-")||str.equals("×")||str.equals("÷")||str.equals("%")) { + if(str.equals("+")||str.equals("-")||str.equals("×")||str.equals("÷")||str.equals("%")) {//修改建议:减号拎出来考虑负号和减号的区分。 num=text1.getText(); char lastc=num.charAt(num.length()-1);//lastc为num的最后一个字符 String lasts=String.valueOf(lastc);//强制转换类型为String来匹配正则表达式 @@ -100,6 +101,14 @@ public class WindowUI extends JFrame implements ActionListener{ if(str.equals("=")) { num=text1.getText(); text2.setText(num);//表达式上移 + //等待实现计算。 + Scanner scanner1=new Scanner(num);//用scanner类进行表达式的分割 + scanner1.useDelimiter("[^0123456789.]+");//正则表达式为所有非数字字符序列 + double []exp=new double[100]; + for(int i=0;i<100&&scanner1.hasNext();i++) { + exp[i]=scanner1.nextDouble();//数组存放各个数 + System.out.println(exp[i]); + } } } } -- Gitee From 605a21d8389ecfaac6e7a1a78a1993cf1d233753 Mon Sep 17 00:00:00 2001 From: yang <2609794429@qq.com> Date: Wed, 1 Jun 2022 22:40:33 +0800 Subject: [PATCH 6/9] =?UTF-8?q?=E5=88=9D=E6=AD=A5=E5=AE=9E=E7=8E=B0?= =?UTF-8?q?=E6=B7=B7=E5=90=88=E8=BF=90=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/WindowUI.java | 201 ++++++++++++++++++++++++++++--- 1 file changed, 181 insertions(+), 20 deletions(-) diff --git a/src/java2022spring/WindowUI.java b/src/java2022spring/WindowUI.java index a827fac..dc6c4d1 100644 --- a/src/java2022spring/WindowUI.java +++ b/src/java2022spring/WindowUI.java @@ -1,12 +1,12 @@ package java2022spring; import javax.swing.*; -import java.util.Stack; -import java.util.Arrays; + import java.awt.*; import java.awt.event.*; import java.util.*; +import java.util.List; public class WindowUI extends JFrame implements ActionListener{ - JTextArea text1= new JTextArea();//用于放置表达式 + JTextArea text1= new JTextArea("0");//用于放置表达式 JTextArea text2=new JTextArea();//用于放置结果 JButton button[]=new JButton[19]; //用于设置按键 public WindowUI(String s,int x,int y,int w,int h) { //设置窗口 @@ -66,31 +66,48 @@ public class WindowUI extends JFrame implements ActionListener{ String regex="[1234567890]"; //正则表达式 if( str.matches(regex) ){ num=text1.getText(); - text1.setText(num+str); //实现多位数 + if(num.equals("0")) { + text1.setText(str); + } + else { + text1.setText(num+str); //实现多位数 + } } if(str.equals(".")) { num=text1.getText(); - if(!num.contains(".")) {//不能连续输入小数点,但有个问题,不能两个小数相加。第二个小数的小数点无法输入。 - text1.setText(num+"."); - } - else { - text2.setText("请勿重复输入小数点");//尝试try和catch抛出异常弹出提示框 + char lastc=num.charAt(num.length()-1);//lastc为num的最后一个字符 + String lasts=String.valueOf(lastc); + if(lasts.matches(regex)) { + if(!num.contains(".")) {//不能连续输入小数点,但有个问题,不能两个小数相加。第二个小数的小数点无法输入。 + text1.setText(num+"."); + } + else { + text2.setText("请勿重复输入小数点");//尝试try和catch抛出异常弹出提示框 + } } } if(str.equals("+")||str.equals("-")||str.equals("×")||str.equals("÷")||str.equals("%")) {//修改建议:减号拎出来考虑负号和减号的区分。 num=text1.getText(); char lastc=num.charAt(num.length()-1);//lastc为num的最后一个字符 String lasts=String.valueOf(lastc);//强制转换类型为String来匹配正则表达式 - if(lasts.matches(regex)) {//判断num末尾是否是数字 - text1.setText(num+str); + if(str.equals("-")&&(!(lasts.matches(regex)))) {//若选择按键为"-"且num末尾不为数字则-作为负号 + text1.setText(num+"-"); + + } + else if(lasts.matches(regex)) {//判断num末尾是否是数字 + + + text1.setText(num+str); + } - else { + else {//num末尾不是数字且按键不为"-"则显示数学错误 text2.setText("数学错误"); } } if(str.equals("C")) {//设置清零键 text1.setText(null); + text2.setText(null); } if(str.equals("←")) { num=text1.getText(); @@ -101,14 +118,158 @@ public class WindowUI extends JFrame implements ActionListener{ if(str.equals("=")) { num=text1.getText(); text2.setText(num);//表达式上移 - //等待实现计算。 - Scanner scanner1=new Scanner(num);//用scanner类进行表达式的分割 - scanner1.useDelimiter("[^0123456789.]+");//正则表达式为所有非数字字符序列 - double []exp=new double[100]; - for(int i=0;i<100&&scanner1.hasNext();i++) { - exp[i]=scanner1.nextDouble();//数组存放各个数 - System.out.println(exp[i]); + List way=zhongzhui(num); + List way2=houzhui(way); + double result2=maths(way2); + text1.setText(String.valueOf(result2)); } - } } + //使用堆栈实现混合运算(代码参考cdsn浪漫的硝烟“中缀表达式转化为后缀表达式”) + private List zhongzhui(String str){//把字符串转化为中缀表达式 + int index=0; + List list=new ArrayList<>(); + do { + char ch=str.charAt(index); + if("+-×÷%".indexOf(str.charAt(index))>=0) { + index++; + list.add(ch+""); + } + else if("0123456789".indexOf(str.charAt(index))>=0) { + String str1=""; + while(index=0) { + str1+=str.charAt(index); + index++; + } + list.add(str1); + } + } + while(index houzhui(List list){//转化为后缀表达式 + Stack fuzhan=new Stack<>(); + List list2=new ArrayList<>(); + if(!list.isEmpty()) { + for(int i=0;i=0) {//用indexof查找第一次出现num的第一个字符的位置,若大于0则为数 + return true; + } + else { + return false; + } + } + public static int adv(String f) {//判断符号级别 + int result=0; + switch(f) { + case"+": + result=1;break; + case"-": + result=1;break; + case"×": + result=2;break; + case"÷": + result=2;break; + case"%": + result=2;break; + } + return result; + } + public double maths(List list2) { + Stack stack =new Stack(); + for(int i=0;i Date: Fri, 3 Jun 2022 01:20:33 +0800 Subject: [PATCH 7/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E6=B7=B7?= =?UTF-8?q?=E5=90=88=E8=BF=90=E7=AE=97=E6=97=B6=E8=BE=93=E5=85=A5=E5=A4=9A?= =?UTF-8?q?=E4=B8=AA=E5=87=8F=E5=8F=B7=E9=80=A0=E6=88=90=E7=9A=84=E8=BF=90?= =?UTF-8?q?=E7=AE=97=E6=B7=B7=E4=B9=B1=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/WindowUI.java | 76 +++++++++++++++++++++++--------- 1 file changed, 56 insertions(+), 20 deletions(-) diff --git a/src/java2022spring/WindowUI.java b/src/java2022spring/WindowUI.java index dc6c4d1..7da9249 100644 --- a/src/java2022spring/WindowUI.java +++ b/src/java2022spring/WindowUI.java @@ -1,6 +1,5 @@ package java2022spring; import javax.swing.*; - import java.awt.*; import java.awt.event.*; import java.util.*; @@ -87,19 +86,45 @@ public class WindowUI extends JFrame implements ActionListener{ } } } - if(str.equals("+")||str.equals("-")||str.equals("×")||str.equals("÷")||str.equals("%")) {//修改建议:减号拎出来考虑负号和减号的区分。 + if(str.equals("-")) { num=text1.getText(); - char lastc=num.charAt(num.length()-1);//lastc为num的最后一个字符 - String lasts=String.valueOf(lastc);//强制转换类型为String来匹配正则表达式 - if(str.equals("-")&&(!(lasts.matches(regex)))) {//若选择按键为"-"且num末尾不为数字则-作为负号 - text1.setText(num+"-"); - - } - else if(lasts.matches(regex)) {//判断num末尾是否是数字 - - + String lasts1; + String lasts2; + if(num.length()>=2) { + char lastc1=num.charAt(num.length()-1); + char lastc2=num.charAt(num.length()-2); + lasts1=String.valueOf(lastc1); + lasts2=String.valueOf(lastc2); + } + else if(num.length()==1) { + char lastc1=num.charAt(num.length()-1); + lasts1=String.valueOf(lastc1); + lasts2="0"; + } + else { + lasts1="0"; + lasts2="0"; + } + + if(!(lasts1.matches(regex))) {//最后一个字符不为数字 + if(lasts2.matches(regex)) {//倒数第二个字符为数字 text1.setText(num+str); + } + else { + text2.setText("数学错误"); + } + } + else { + text1.setText(num+str); + } + } + if(str.equals("+")||str.equals("×")||str.equals("÷")||str.equals("%")) {//修改建议:减号拎出来考虑负号和减号的区分。 + num=text1.getText(); + char lastc=num.charAt(num.length()-1);//lastc为num的最后一个字符 + String lasts=String.valueOf(lastc);//强制转换类型为String来匹配正则表达式 + if(lasts.matches(regex)) {//判断num末尾是否是数字 + text1.setText(num+str); } else {//num末尾不是数字且按键不为"-"则显示数学错误 text2.setText("数学错误"); @@ -144,6 +169,10 @@ public class WindowUI extends JFrame implements ActionListener{ } } while(index houzhui(List list){//转化为后缀表达式 @@ -152,7 +181,7 @@ public class WindowUI extends JFrame implements ActionListener{ if(!list.isEmpty()) { for(int i=0;i=adv(list.get(i))) {//fuzhan顶端的符号等级小于等于此符号 + list2.add(fuzhan.pop()); fuzhan.push(list.get(i)); } else { - while(!fuzhan.isEmpty()&&!"(".equals(fuzhan.peek())) { - if(adv(list.get(i))<=adv(fuzhan.peek())) { - list2.add(fuzhan.pop()); - } - } - if(fuzhan.isEmpty()||fuzhan.peek().charAt(0)=='(') { + + + list2.add(list.get(i)); + + + if(fuzhan.isEmpty()||fuzhan.peek().charAt(0)=='(') {//若fuzhan为空或者fuzhan顶端为( fuzhan.push(list.get(i)); } } @@ -190,6 +220,11 @@ public class WindowUI extends JFrame implements ActionListener{ list2.add(fuzhan.pop()); } } + for(int i=0;i Date: Fri, 3 Jun 2022 19:45:23 +0800 Subject: [PATCH 8/9] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BA=86=E8=B4=9F?= =?UTF-8?q?=E6=95=B0=E7=9A=84=E8=AE=A1=E7=AE=97=EF=BC=8C=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=BA=86=E5=B9=B3=E6=96=B9=E3=80=81=E5=BC=80=E6=96=B9=E3=80=81?= =?UTF-8?q?=E5=80=92=E6=95=B0=E7=9A=84=E8=AE=A1=E7=AE=97=E3=80=82=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E4=BA=86=E6=B7=B7=E5=90=88=E8=BF=90=E7=AE=97=E6=9C=89?= =?UTF-8?q?=E6=97=B6=E4=BC=9A=E9=99=B7=E5=85=A5=E6=AD=BB=E5=BE=AA=E7=8E=AF?= =?UTF-8?q?=E7=9A=84=E9=97=AE=E9=A2=98=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{WindowUI.java => Calculator.java} | 377 +++++++++--------- src/java2022spring/Houzhui.java | 97 +++++ src/java2022spring/MainWindow.java | 2 +- src/java2022spring/Zhongzhui.java | 34 ++ 4 files changed, 317 insertions(+), 193 deletions(-) rename src/java2022spring/{WindowUI.java => Calculator.java} (33%) create mode 100644 src/java2022spring/Houzhui.java create mode 100644 src/java2022spring/Zhongzhui.java diff --git a/src/java2022spring/WindowUI.java b/src/java2022spring/Calculator.java similarity index 33% rename from src/java2022spring/WindowUI.java rename to src/java2022spring/Calculator.java index 7da9249..b664204 100644 --- a/src/java2022spring/WindowUI.java +++ b/src/java2022spring/Calculator.java @@ -4,11 +4,16 @@ import java.awt.*; import java.awt.event.*; import java.util.*; import java.util.List; -public class WindowUI extends JFrame implements ActionListener{ +import java.math.*; +public class Calculator extends JFrame implements ActionListener{ JTextArea text1= new JTextArea("0");//用于放置表达式 JTextArea text2=new JTextArea();//用于放置结果 - JButton button[]=new JButton[19]; //用于设置按键 - public WindowUI(String s,int x,int y,int w,int h) { //设置窗口 + JTextArea text3=new JTextArea(); + JTextArea text4=new JTextArea("0"); + JButton button[]=new JButton[24]; //用于设置按键 + Zhongzhui zz=new Zhongzhui(); + Houzhui hz=new Houzhui(); + public Calculator(String s,int x,int y,int w,int h) { //设置窗口 init(s); WindowKey(); setLocation(x,y); @@ -28,31 +33,41 @@ public class WindowUI extends JFrame implements ActionListener{ public void WindowKey() { JSplitPane p1=new JSplitPane(JSplitPane.VERTICAL_SPLIT,text1,text2);//拆分窗格添加文本框 JPanel p2=new JPanel(); - text1.setPreferredSize(new Dimension(380,40)); - text2.setPreferredSize(new Dimension(380,40));//设置文本框大小 + text1.setPreferredSize(new Dimension(480,40)); + text2.setPreferredSize(new Dimension(480,40));//设置文本框大小 + text3.setPreferredSize(new Dimension(480,40)); text2.setEditable(false);//设置文本框不可编辑 text1.setEditable(false); + text3.setEditable(false); + text4.setEditable(false); + text4.setVisible(false); + this.add(text3,BorderLayout.SOUTH); this.add(p1,BorderLayout.NORTH); //加入p1 - p2.setLayout(new GridLayout(5,4)); //网格布局 - button[0]=new JButton("×"); - button[1]=new JButton("÷"); - button[2]=new JButton("C"); - button[3]=new JButton("←"); - button[4]=new JButton("7"); - button[5]=new JButton("8"); - button[6]=new JButton("9"); - button[7]=new JButton("-"); - button[8]=new JButton("4"); - button[9]=new JButton("5"); - button[10]=new JButton("6"); - button[11]=new JButton("+"); - button[12]=new JButton("1"); - button[13]=new JButton("2"); - button[14]=new JButton("3"); - button[15]=new JButton("="); - button[16]=new JButton("%"); - button[17]=new JButton("0"); - button[18]=new JButton("."); + p2.setLayout(new GridLayout(6,4)); //网格布局 + button[0]=new JButton("1/x"); + button[1]=new JButton("rooting"); + button[2]=new JButton("quadratic"); + button[3]=new JButton("C"); + button[4]=new JButton("×"); + button[5]=new JButton("÷"); + button[6]=new JButton("M"); + button[7]=new JButton("CE"); + button[8]=new JButton("7"); + button[9]=new JButton("8"); + button[10]=new JButton("9"); + button[11]=new JButton("←"); + button[12]=new JButton("4"); + button[13]=new JButton("5"); + button[14]=new JButton("6"); + button[15]=new JButton("+"); + button[16]=new JButton("1"); + button[17]=new JButton("2"); + button[18]=new JButton("3"); + button[19]=new JButton("-"); + button[20]=new JButton("%"); + button[21]=new JButton("0"); + button[22]=new JButton("."); + button[23]=new JButton("="); for(int i=0;i=0) { + number=Math.sqrt(number); + text1.setText(String.valueOf(number)); + } + else { + text3.setText("数学错误"); + } + } + if(str.equals("quadratic")) { + num=text1.getText(); + number= Double.parseDouble(num); + if(number>=0) { + number=Math.pow(number, 2); + text1.setText(String.valueOf(number)); + } + else { + number=-number; + number=Math.pow(number, 2); + text1.setText(String.valueOf(number)); + } + } + if(str.equals("M")) { + if(text4.getText().equals("0")) { + num=text1.getText(); + text4.setText(num); + } + else { + num=text4.getText(); + text1.setText(num); + text4.setText("0"); + } + } if(str.equals(".")) { num=text1.getText(); char lastc=num.charAt(num.length()-1);//lastc为num的最后一个字符 String lasts=String.valueOf(lastc); if(lasts.matches(regex)) { - if(!num.contains(".")) {//不能连续输入小数点,但有个问题,不能两个小数相加。第二个小数的小数点无法输入。 + if(!num.contains(".")) { text1.setText(num+"."); } else { - text2.setText("请勿重复输入小数点");//尝试try和catch抛出异常弹出提示框 + text3.setText("请勿重复输入小数点"); } } } if(str.equals("-")) { num=text1.getText(); + num2=text2.getText(); String lasts1; String lasts2; if(num.length()>=2) { @@ -99,19 +177,30 @@ public class WindowUI extends JFrame implements ActionListener{ else if(num.length()==1) { char lastc1=num.charAt(num.length()-1); lasts1=String.valueOf(lastc1); - lasts2="0"; + lasts2="a"; } else { - lasts1="0"; - lasts2="0"; + lasts1="a"; + lasts2="a"; } - - if(!(lasts1.matches(regex))) {//最后一个字符不为数字 + if(num.equals("0")) { + text1.setText(str); + } + else if(num.contains("-")) { + text2.setText(num2+"(0"+num+")"+str); + text1.setText("0"); + } + else if(lasts1.matches(regex)) {//最后一个字符为数字 if(lasts2.matches(regex)) {//倒数第二个字符为数字 - text1.setText(num+str); + text2.setText(num2+num+str); + text1.setText("0"); + } + else if(lasts2.equals("a")) { + text2.setText(num2+num+str); + text1.setText("0"); } else { - text2.setText("数学错误"); + text3.setText("数学错误"); } } else { @@ -119,20 +208,26 @@ public class WindowUI extends JFrame implements ActionListener{ } } - if(str.equals("+")||str.equals("×")||str.equals("÷")||str.equals("%")) {//修改建议:减号拎出来考虑负号和减号的区分。 + if(str.equals("+")||str.equals("×")||str.equals("÷")||str.equals("%")) { num=text1.getText(); + num2=text2.getText(); char lastc=num.charAt(num.length()-1);//lastc为num的最后一个字符 String lasts=String.valueOf(lastc);//强制转换类型为String来匹配正则表达式 - if(lasts.matches(regex)) {//判断num末尾是否是数字 - text1.setText(num+str); + if(num.contains("-")) { + text2.setText(num2+"(0"+num+")"+str); + text1.setText("0"); + } + else if(lasts.matches(regex)) {//判断num末尾是否是数字 + text2.setText(num2+num+str); + text1.setText("0"); } else {//num末尾不是数字且按键不为"-"则显示数学错误 - text2.setText("数学错误"); + text3.setText("数学错误"); } } if(str.equals("C")) {//设置清零键 - text1.setText(null); - text2.setText(null); + text1.setText("0"); + text2.setText(""); } if(str.equals("←")) { num=text1.getText(); @@ -142,170 +237,68 @@ public class WindowUI extends JFrame implements ActionListener{ } if(str.equals("=")) { num=text1.getText(); - text2.setText(num);//表达式上移 - List way=zhongzhui(num); - List way2=houzhui(way); + num2=text2.getText(); + if(num.contains("-")) + { + text2.setText(num2+"(0"+num+")"); + } + else text2.setText(num2+num);//表达式下移 + num2=text2.getText(); + + List way=zz.zhongzhui(num2); + + List way2=hz.houzhui(way); double result2=maths(way2); text1.setText(String.valueOf(result2)); } } - //使用堆栈实现混合运算(代码参考cdsn浪漫的硝烟“中缀表达式转化为后缀表达式”) - private List zhongzhui(String str){//把字符串转化为中缀表达式 - int index=0; - List list=new ArrayList<>(); - do { - char ch=str.charAt(index); - if("+-×÷%".indexOf(str.charAt(index))>=0) { - index++; - list.add(ch+""); + public double maths(List list2) { + Stack stack =new Stack(); + for(int i=0;i=0) { - String str1=""; - while(index=0) { - str1+=str.charAt(index); - index++; - } - list.add(str1); + else if(list2.get(i).equals("-")) { + double num2=Double.parseDouble(stack.pop()); + double num1=Double.parseDouble(stack.pop()); + res=num1-num2; + } - } - while(index houzhui(List list){//转化为后缀表达式 - Stack fuzhan=new Stack<>(); - List list2=new ArrayList<>(); - if(!list.isEmpty()) { - for(int i=0;i=adv(list.get(i))) {//fuzhan顶端的符号等级小于等于此符号 - list2.add(fuzhan.pop()); - fuzhan.push(list.get(i)); - } - else { - - - list2.add(list.get(i)); - - - if(fuzhan.isEmpty()||fuzhan.peek().charAt(0)=='(') {//若fuzhan为空或者fuzhan顶端为( - fuzhan.push(list.get(i)); - } - } - } - else if(list.get(i).charAt(0)==')'){ - while(fuzhan.peek().charAt(0)!='(') {//peek用于返回堆栈顶部元素但不删除 - list2.add(fuzhan.pop()); - } - fuzhan.pop();//pop用于返回并移除堆栈顶部元素 - } - } + else { + text3.setText("除数不能为零"); } } - while(!fuzhan.isEmpty()) { - list2.add(fuzhan.pop()); + else if(list2.get(i).equals("%")) { + double num2=Double.parseDouble(stack.pop()); + double num1=Double.parseDouble(stack.pop()); + res=num1%num2; } - } - for(int i=0;i=0) {//用indexof查找第一次出现num的第一个字符的位置,若大于0则为数 - return true; - } - else { - return false; + stack.push(""+res); } } - public static int adv(String f) {//判断符号级别 - int result=0; - switch(f) { - case"+": - result=1;break; - case"-": - result=1;break; - case"×": - result=2;break; - case"÷": - result=2;break; - case"%": - result=2;break; - } - return result; + if(!stack.isEmpty()) { + return Double.parseDouble(stack.pop()); } - public double maths(List list2) { - Stack stack =new Stack(); - for(int i=0;i houzhui(List list){//转化为后缀表达式 + Stack fuzhan=new Stack<>(); + List list2=new ArrayList<>(); + if(!list.isEmpty()) {//若list不为空 + for(int i=0;i=adv(list.get(i))) {//fuzhan顶端的符号等级大于等于此符号 + list2.add(fuzhan.pop()); + if(!fuzhan.isEmpty()) { + if(adv(fuzhan.peek())>=adv(list.get(i))) { + list2.add(list.get(i)); + } + } + fuzhan.push(list.get(i)); + } + else if(adv(fuzhan.peek())=0) {//用indexof查找第一次出现num的第一个字符的位置,若大于0则为数 + return true; + } + else { + return false; + } + } + public static int adv(String f) {//判断符号级别 + int result=0; + switch(f) { + case"+": + result=1;break; + case"-": + result=1;break; + case"×": + result=2;break; + case"÷": + result=2;break; + case"%": + result=2;break; + } + return result; + } + +} diff --git a/src/java2022spring/MainWindow.java b/src/java2022spring/MainWindow.java index 67a4da0..1757d41 100644 --- a/src/java2022spring/MainWindow.java +++ b/src/java2022spring/MainWindow.java @@ -3,6 +3,6 @@ import javax.swing.*; import java.awt.*; public class MainWindow { public static void main(String args[]) { - WindowUI win=new WindowUI("计算器",600,200,400,400);//设置窗口 + Calculator win=new Calculator("计算器",600,200,500,500);//设置窗口 } } diff --git a/src/java2022spring/Zhongzhui.java b/src/java2022spring/Zhongzhui.java new file mode 100644 index 0000000..c8375de --- /dev/null +++ b/src/java2022spring/Zhongzhui.java @@ -0,0 +1,34 @@ +package java2022spring; + +import java.util.ArrayList; +import java.util.List; + +public class Zhongzhui { + //使用堆栈实现混合运算(代码参考cdsn浪漫的硝烟“中缀表达式转化为后缀表达式”) + List zhongzhui(String str){//把字符串转化为中缀表达式 + int index=0; + List list=new ArrayList<>(); + do { + char ch=str.charAt(index); + if("+-×÷%()".indexOf(str.charAt(index))>=0) { + index++; + list.add(ch+""); + } + else if("0123456789".indexOf(str.charAt(index))>=0) { + String str1=""; + while(index=0) { + str1+=str.charAt(index); + index++; + } + list.add(str1); + } + } + while(index Date: Sun, 5 Jun 2022 20:07:10 +0800 Subject: [PATCH 9/9] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E4=BA=86=E5=85=B3?= =?UTF-8?q?=E4=BA=8E=E5=8F=96=E4=BD=99=E7=AC=A6=E5=8F=B7=E5=90=8E=E4=B8=BA?= =?UTF-8?q?0=E6=B2=A1=E6=9C=89=E6=8A=A5=E9=94=99=E7=9A=84=E9=94=99?= =?UTF-8?q?=E8=AF=AF=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Calculator.class | Bin 0 -> 8448 bytes Houzhui.class | Bin 0 -> 2803 bytes MainWindow.class | Bin 0 -> 559 bytes Zhongzhui.class | Bin 0 -> 1695 bytes src/java2022spring/Calculator.java | 9 ++++++++- src/java2022spring/Houzhui.java | 6 ++++-- 6 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 Calculator.class create mode 100644 Houzhui.class create mode 100644 MainWindow.class create mode 100644 Zhongzhui.class diff --git a/Calculator.class b/Calculator.class new file mode 100644 index 0000000000000000000000000000000000000000..14c2efad78691875193b67cda9d97b92d8c0047e GIT binary patch literal 8448 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 F{|E2MkbVFF literal 0 HcmV?d00001 diff --git a/Houzhui.class b/Houzhui.class new file mode 100644 index 0000000000000000000000000000000000000000..b35280cffed5b3641eab0ca55d844917cf0f675a GIT binary patch literal 2803 zcmZ`*TWph69RHnO)~@@;wr(98LpBDR?bfm}U|iZw1`gTS1sINtQ~9=a+Xr1+dO?Pu zf+#P<%ad+C0Ge16ctBzbNTMeCqCWaS)Wj!Ee8R-U7(v0``P#8>TWNB>bI$*MKmG2( z=U)J5!y7i31j>)7$JLhRmX>%lriI6wc1DsXCz6^C7J*`kYYM3Z_YWTljwA%~0$Ny0 zv0!{-4^f(@p)YS@Vu#)%jAj9l(cV(S4MBi`2s(DGt_~L*-oq~EiDPY&)nczzi zi@o;fsyqrB&`4G4=;#8vOq%_kLk`r!r(g}5nDdbdHP%6^EVOF7^nR^^7OW#6nv72f z)EiaJiZE!;f~27v6tqf19a_9U8jPulNK6W>vSYJ=aLcn_K>%%1crbWWpv;{k64Jb< z6l|4l>4jXk7_BxR;Derl1X-7KsG)dbZ^zXJn!)`oqvB{CnaU=aHS ztg_?uWE)~NYv-U8aZte_*;O{3G8C4uAqjgvlMLB`AyyTQ%!rul5yoYVovelhN(?x? zfZ1MF$=1Sv#-Zp^ofTqxvAQo>G++_ZU(%xg%&Bxtrx3y%g*^p9m+rH!UYRE`t9p^Uw3M~nqECxxjACnu$-q=Mrz zul5NwJ|Rby9Vh5-ogF8+HQI5Co6n9{DE#a9?08M?HwdHByjU=v3^BBhfk-ko65OH5 zX{Kc7;~HrNRI9H!v#V@#39uZ_1R?m|KvZovL24<@>b?!p%W?}VO!x}5H?eve z6+Q#x7ThN6Pl@vem^lq^vHKFry#`Q|bX>*(A90<;Wt@;&XVCn3de>sd7kP+R9>@P7Mlu?P z9vM7?-HQdZ8O+op;<*G*3MGq-m0o2-{qQ%6?%aRQB3u?`Z>PZJ2fK3dY@B|0S7sGU zucOB|m)JD+>dd|j^TS_>PUCM_$STt~3PUKxyC}o^e6~J8Ij*1rUy|c{EW^*J!Y_QV{^65l!wRtk)xv`s;paQF z3#&yR>V$@Raf%cD0vg2I9LFEQD?Wx#e8&A7z8>E~5qGdb{DfBVJNG|0=>NhNQyw;( z$`CLuLz}4{?RrnNvqM<#*`AQ67w{r`!)~g@`R(LEI?0h?4mRW+mUJ=hCEi%z=i3y=f$_@WS7l zT%0Y81F)W}k!vfLkE@644%Y#$zqv-e&X?G|Gw4pC%j=xd&kZTGd7Uro=T#}J^*T@M z=jAEXd7ZE7XIBc9mOu(+@>68x$00vfYoKZ_WVNhPU=Quwixb#~(|jAxQulejau+a! uw^#!*jOC=DA2_2sYa;wCvoG|3x=`>R0xZ$m0{OG>caJE6*U4hSx&HwyG*PMm literal 0 HcmV?d00001 diff --git a/MainWindow.class b/MainWindow.class new file mode 100644 index 0000000000000000000000000000000000000000..e70ba23845d3fc2bb018fb0fd2e2e449bbcf394e GIT binary patch literal 559 zcmZ`$Jx{_=6g{sL3KfNd7C#3!U=YKKx{#QdR2eX+ae9;nA1SRVMShBLbaNtcBGJUz z_&<#P0B7TU#e@NEntOZRz4yFxZr{G2UI6T4OM}9&*5fz4x?8Odt^?t9E5}@TXTt0F zBMmA;R+cL+r%I#UbL@~Iu_rtc9x%j;r51x)_dAY`7*c7(kzmMJ!gEfB{k9XF^0w`au$T zhScZy{$qUme)pgwixsKSq@m(G-w{2LAs%!|SpJVI$@56+nG-#`ltk-Ie;C-#p^)A) zvxV+Rr`QIu&<_9<`l5|d)Cg55Gs^Mu1j)y!tW%U_K*a*Z^t6HUBB2zPkf9Sf+@PpX wE<7W9k;@s%xq(-MebGC?vNfaAqqYQ08jzIcbPNToMu=8}bs{B?gcWT50GNq-mH+?% literal 0 HcmV?d00001 diff --git a/Zhongzhui.class b/Zhongzhui.class new file mode 100644 index 0000000000000000000000000000000000000000..7e2d8b6e7a4a4756681b229d13f95045154d1d9a GIT binary patch literal 1695 zcma)6T~8cU7=F$&%j^yVr3(w?qeUvMyTxUJwm?~0rPQ_v1?pBRsMTS2x;wb+lG)iR zB*vRwcw^GUL@)HF-jH~uCS8h+V$wS={SE#J6BM5_vy@L0Gs&5A&ilMy&-=dT_kVu= z6~JX!DtrPb7L5l+e{X+(aoM)=nfQFRkk71UOOz@C^->zo85B$}ESf1tpnAm0Th0}M zsz`KJKp88fO$}8D>hPml;Mk;XNV3#NU?Sjd?Ip~*tZ$jutICC`;h#mQPlf!4|Y z@}Ce0uI>aQ&=ql!UMxvR#+rzFS0%^F#V4(zBUO@CCT}<;n|_D>hswxdt5*^#8Uz~L z)Lq-7wr#9P2O2^MYG}d<70vtD@gmaEf>u(L${O}4xl$tI(Xjy98CQ4g`Pa|a&qSh9 z{gjRlyd-}FB}=Gu;3P{ zLX3t^L}Wdp5^*@i=&VF^>v$D0fq+x+^aL6sM_8*t9DOQ!1?qM=k#y+j$9Xn_kxn1* z<26enIv>DA0j;;M|NMoE1A{}C0vHs4%;l2IWmw?s-uQO(4u>oQ9?{vh?7V7YdD+a< zXZumvSNKXuC$H-m#Z_wL%zVblx=lMCz%_xI-I#iUxQ?4DZtSng`^7K}8Y&l*BJBD-McRNc!jMGAnwPJ1_Ztt}CQlvzT zNhglo$E_vMw0~MxmUkw$>wx}|qa#q8bd1zTw~Xb=pliuO$xfNqE%_AGy?9=FWYDZB zv*2q4__*Wy!Byoc&OiGE{&VXH{OF1`u2L-58m_tr;J=n9pbp1qq@Ft;j!Prrdnm*L zn^l*eAvCv+#;NZ1GQtB&sLkD!aq=5;9@QIp01E$c34DpNHe}-m!j#hj@;vS(5U!fgq{6C@gFMNq4oi|HB~BwnoPsp1$>M0Ve-9?{_jz*? gfxn>%74a>^#TFV=G_^JUg}@eSMFZg(f_%vS3-DEiF#rGn literal 0 HcmV?d00001 diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java index b664204..194bbaa 100644 --- a/src/java2022spring/Calculator.java +++ b/src/java2022spring/Calculator.java @@ -228,6 +228,8 @@ public class Calculator extends JFrame implements ActionListener{ if(str.equals("C")) {//设置清零键 text1.setText("0"); text2.setText(""); + text3.setText(""); + text4.setText("0"); } if(str.equals("←")) { num=text1.getText(); @@ -289,7 +291,12 @@ public class Calculator extends JFrame implements ActionListener{ else if(list2.get(i).equals("%")) { double num2=Double.parseDouble(stack.pop()); double num1=Double.parseDouble(stack.pop()); - res=num1%num2; + if(num2!=0) { + res=num1%num2; + } + else { + text3.setText("数学错误"); + } } stack.push(""+res); } diff --git a/src/java2022spring/Houzhui.java b/src/java2022spring/Houzhui.java index 96f9da5..33406e4 100644 --- a/src/java2022spring/Houzhui.java +++ b/src/java2022spring/Houzhui.java @@ -29,10 +29,12 @@ public class Houzhui { list2.add(fuzhan.pop()); if(!fuzhan.isEmpty()) { if(adv(fuzhan.peek())>=adv(list.get(i))) { - list2.add(list.get(i)); + list2.add(fuzhan.pop()); + fuzhan.push(list.get(i)); } } - fuzhan.push(list.get(i)); + else + fuzhan.push(list.get(i)); } else if(adv(fuzhan.peek())