From baf9062815300040afb52e916814661fd3477d2e Mon Sep 17 00:00:00 2001 From: Azure Tans <911974741@qq.com> Date: Fri, 3 Jun 2022 10:18:47 +0800 Subject: [PATCH 1/6] =?UTF-8?q?=E5=81=9A=E4=BA=86=E4=B8=AA=E6=A1=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Carculator.java | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) create mode 100644 src/java2022spring/Carculator.java diff --git a/src/java2022spring/Carculator.java b/src/java2022spring/Carculator.java new file mode 100644 index 0000000..54c26f3 --- /dev/null +++ b/src/java2022spring/Carculator.java @@ -0,0 +1,21 @@ +package java2022spring; + +import java.awt.BorderLayout; +import java.awt.HeadlessException; +import javax.swing.*; +import java.awt.*; + +public class Carculator extends JFrame{ + public Carculator() throws HeadlessException { + this.setTitle(""); + this.setSize(300,300); + this.setLayout(new BorderLayout()); + this.setResizable(false);// + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + } + + public static void main(String[] args) { + Carculator carculator=new Carculator(); + carculator.setVisible(true); + } +} -- Gitee From 8a6ba8cb1297bae2a558ffaff50ff0f642ef5b9c Mon Sep 17 00:00:00 2001 From: Azure Tans <911974741@qq.com> Date: Fri, 3 Jun 2022 12:51:28 +0800 Subject: [PATCH 2/6] =?UTF-8?q?=E5=9F=BA=E6=9C=AC=E6=A1=86=E6=9E=B6?= =?UTF-8?q?=E5=88=9B=E5=BB=BA=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Calculator.java | 58 ++++++++++++++++++++++++++++++ src/java2022spring/Carculator.java | 21 ----------- 2 files changed, 58 insertions(+), 21 deletions(-) create mode 100644 src/java2022spring/Calculator.java delete mode 100644 src/java2022spring/Carculator.java diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java new file mode 100644 index 0000000..2ae2085 --- /dev/null +++ b/src/java2022spring/Calculator.java @@ -0,0 +1,58 @@ +package java2022spring; + +import javax.swing.*; +import java.awt.*; + + +public class Calculator extends JFrame{ + private JPanel cal_north =new JPanel();//北面布局 + private JTextField cal_input =new JTextField();//输入框 + private JPanel cal_center =new JPanel();//中间布局 + public Calculator() throws HeadlessException { + this.win(); + this.win_North(); + this.win_Button(); + } + + //创建窗体 + public void win() { + this.setTitle("计算器"); + this.setSize(300,350); + this.setBackground(Color.white); + this.setLayout(new BorderLayout()); + this.setResizable(false);//不可拉伸 + this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + this.setLocationRelativeTo(null);//使窗体居中 + } + //添加输入框 + public void win_North() { + Dimension text_size=new Dimension(250,40);//设置输入框大小 + cal_north.add(cal_input);//把输入框加入北面布局 + cal_input.setPreferredSize(text_size);//将大小应用至输入框 + this.add(cal_north,BorderLayout.NORTH); + } + + //添加按钮 + public void win_Button() { + String [] Btns= {"%","CE","C","←","1/x","x²","√x","÷","7","8","9","×","4","5","6","-","1","2","3","+","±","0",".","="}; + String num="[1234567890]"; + this.cal_center.setLayout(new GridLayout(6,4,3,3)); + for(int i=0;i<24;i++) { + JButton btn=new JButton(); + btn.setText(Btns[i]); + cal_center.add(btn); + btn.setFont(new Font("楷体",Font.BOLD,12)); + if(Btns[i].matches(num)) { + btn.setFont(new Font("黑体",Font.BOLD,16));//把数字加粗放大 + } + } + this.add(cal_center,BorderLayout.CENTER); + } + + public static void main(String[] args) { + Calculator calculator=new Calculator(); + calculator.setVisible(true); + } +} + + diff --git a/src/java2022spring/Carculator.java b/src/java2022spring/Carculator.java deleted file mode 100644 index 54c26f3..0000000 --- a/src/java2022spring/Carculator.java +++ /dev/null @@ -1,21 +0,0 @@ -package java2022spring; - -import java.awt.BorderLayout; -import java.awt.HeadlessException; -import javax.swing.*; -import java.awt.*; - -public class Carculator extends JFrame{ - public Carculator() throws HeadlessException { - this.setTitle(""); - this.setSize(300,300); - this.setLayout(new BorderLayout()); - this.setResizable(false);// - this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - } - - public static void main(String[] args) { - Carculator carculator=new Carculator(); - carculator.setVisible(true); - } -} -- Gitee From 2096d5fdbe5676504a818347f993435516fd9903 Mon Sep 17 00:00:00 2001 From: Azure Tans <911974741@qq.com> Date: Fri, 3 Jun 2022 23:53:04 +0800 Subject: [PATCH 3/6] =?UTF-8?q?=E5=A4=A7=E8=87=B4=E6=88=90=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Calculator.java | 79 +++++++++++++++++++++++++++--- 1 file changed, 73 insertions(+), 6 deletions(-) diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java index 2ae2085..50183f2 100644 --- a/src/java2022spring/Calculator.java +++ b/src/java2022spring/Calculator.java @@ -2,9 +2,11 @@ package java2022spring; import javax.swing.*; import java.awt.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; -public class Calculator extends JFrame{ +public class Calculator extends JFrame implements ActionListener{ private JPanel cal_north =new JPanel();//北面布局 private JTextField cal_input =new JTextField();//输入框 private JPanel cal_center =new JPanel();//中间布局 @@ -23,28 +25,47 @@ public class Calculator extends JFrame{ this.setResizable(false);//不可拉伸 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null);//使窗体居中 + this.cal_input.setHorizontalAlignment(JTextField.RIGHT);//输入内容右对齐 } + //添加输入框 public void win_North() { - Dimension text_size=new Dimension(250,40);//设置输入框大小 + Dimension text_size=new Dimension(280,45);//设置输入框大小 cal_north.add(cal_input);//把输入框加入北面布局 cal_input.setPreferredSize(text_size);//将大小应用至输入框 this.add(cal_north,BorderLayout.NORTH); + cal_input.setFont(new Font("黑体",Font.BOLD,18)); } //添加按钮 public void win_Button() { String [] Btns= {"%","CE","C","←","1/x","x²","√x","÷","7","8","9","×","4","5","6","-","1","2","3","+","±","0",".","="}; String num="[1234567890]"; - this.cal_center.setLayout(new GridLayout(6,4,3,3)); + String sigh="[\\+\\-\\×\\÷]"; + String reset="[C←]"; + this.cal_center.setLayout(new GridLayout(6,4,3,3));//设置按键个数及大小 for(int i=0;i<24;i++) { JButton btn=new JButton(); btn.setText(Btns[i]); - cal_center.add(btn); - btn.setFont(new Font("楷体",Font.BOLD,12)); + btn.setBackground(Color.WHITE); + btn.setFont(new Font("楷体",Font.BOLD,14)); if(Btns[i].matches(num)) { - btn.setFont(new Font("黑体",Font.BOLD,16));//把数字加粗放大 + btn.setFont(new Font("黑体",Font.BOLD,18));//把数字加粗放大 + } + else if(Btns[i].matches(sigh)) { + btn.setBackground(Color.GRAY); + btn.setForeground(Color.white); + } + else if(Btns[i].matches(reset)) { + btn.setBackground(Color.ORANGE); + btn.setForeground(Color.WHITE); } + else if(Btns[i]=="=") { + btn.setBackground(Color.BLACK); + btn.setForeground(Color.WHITE); + } + btn.addActionListener(this); + cal_center.add(btn); } this.add(cal_center,BorderLayout.CENTER); } @@ -53,6 +74,52 @@ public class Calculator extends JFrame{ Calculator calculator=new Calculator(); calculator.setVisible(true); } + + //为按键添加功能 + private String firstInput=null; + private String operation=null; + @Override + public void actionPerformed(ActionEvent e) { + String input=e.getActionCommand(); + if("0123456789.".indexOf(input)!=-1) { + this.cal_input.setText(cal_input.getText()+input);//可从左至右输入数据 + } + else if(input.equals("CE")) { + cal_input.setText(""); + } + else if(input.matches("[\\+\\-\\×\\÷\\%]{1}")){ //{1}是其中一个的意思 + operation=input; + firstInput=this.cal_input.getText(); + this.cal_input.setText(""); + } + else if (input.equals("=")) { + double a=Double.valueOf(firstInput); + double b=Double.valueOf(this.cal_input.getText()); + double result=0; + String result_string; + switch(operation) { + case"+": + result=a+b; + break; + case"-": + result=a-b; + break; + case"×": + result=a*b; + break; + case"÷": + if(b!=0) + result=a/b; + break; + case"%": + if(b!=0) + result=a%b; + break; + } + result_string=Double.toString(result); + this.cal_input.setText(result_string); + } + } } -- Gitee From e59cf533053acdf333b020f8a4a892b4e04528d9 Mon Sep 17 00:00:00 2001 From: Azure Tans <911974741@qq.com> Date: Mon, 6 Jun 2022 14:00:00 +0800 Subject: [PATCH 4/6] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=B8=83=E5=B1=80?= =?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/java2022spring/Calculator.java | 63 +++++++++++++++++++++--------- 1 file changed, 45 insertions(+), 18 deletions(-) diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java index 50183f2..274d7a1 100644 --- a/src/java2022spring/Calculator.java +++ b/src/java2022spring/Calculator.java @@ -4,23 +4,30 @@ import javax.swing.*; import java.awt.*; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.text.DecimalFormat; +import java.math.BigInteger; +import java.math.BigDecimal; public class Calculator extends JFrame implements ActionListener{ private JPanel cal_north =new JPanel();//北面布局 - private JTextField cal_input =new JTextField();//输入框 private JPanel cal_center =new JPanel();//中间布局 + private JPanel cal_south =new JPanel();//南面布局 + private JTextField cal_input =new JTextField("0");//输入框(中 + private JTextField cal_process =new JTextField();//过程框(北 public Calculator() throws HeadlessException { this.win(); - this.win_North(); + this.win_NORTH(); + this.win_CENTER(); this.win_Button(); + } //创建窗体 public void win() { this.setTitle("计算器"); - this.setSize(300,350); - this.setBackground(Color.white); + this.setSize(300,450); + this.setBackground(Color.LIGHT_GRAY); this.setLayout(new BorderLayout()); this.setResizable(false);//不可拉伸 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); @@ -29,28 +36,48 @@ public class Calculator extends JFrame implements ActionListener{ } //添加输入框 - public void win_North() { - Dimension text_size=new Dimension(280,45);//设置输入框大小 - cal_north.add(cal_input);//把输入框加入北面布局 - cal_input.setPreferredSize(text_size);//将大小应用至输入框 - this.add(cal_north,BorderLayout.NORTH); - cal_input.setFont(new Font("黑体",Font.BOLD,18)); + public void win_CENTER() { + cal_center.setLayout(new BorderLayout()); + cal_center.add(cal_input);//把输入框加入中间布局 + cal_center.setSize(280, 50); + this.add(cal_center,BorderLayout.CENTER); + cal_input.setBackground(Color.LIGHT_GRAY); + cal_input.setFont(new Font("黑体",Font.BOLD,50)); + cal_input.setBorder(null); //删除输入框的边框 + cal_input.setEditable(false); //不能修改结果文本框 + cal_center.setBorder(BorderFactory.createMatteBorder(5, 3, 0, 3, Color.LIGHT_GRAY)); } + public void win_NORTH() { + cal_north.setLayout(new BorderLayout()); + cal_north.add(cal_process);//把过程框加入中间布局 + Dimension process_size=new Dimension(280,30);//设置过程框大小 + cal_process.setPreferredSize(process_size);//将大小应用至输入框 + this.add(cal_north,BorderLayout.NORTH); + cal_process.setBackground(Color.LIGHT_GRAY); + cal_process.setFont(new Font("黑体",Font.BOLD,10)); + cal_process.setBorder(null); //删除输入框的边框 + cal_process.setEditable(false); //不能修改结果文本框 + cal_north.setBorder(BorderFactory.createMatteBorder(10, 3, 5, 3, Color.LIGHT_GRAY)); + } + //添加按钮 public void win_Button() { - String [] Btns= {"%","CE","C","←","1/x","x²","√x","÷","7","8","9","×","4","5","6","-","1","2","3","+","±","0",".","="}; + String [] Btns= {"%","CE","C","←","n!","aⁿ","cos","sin","1/x","x²","√x","÷","7","8","9","×","4","5","6","-","1","2","3","+","±","0",".","="}; String num="[1234567890]"; String sigh="[\\+\\-\\×\\÷]"; String reset="[C←]"; - this.cal_center.setLayout(new GridLayout(6,4,3,3));//设置按键个数及大小 - for(int i=0;i<24;i++) { + this.cal_south.setBackground(Color.LIGHT_GRAY); + this.cal_south.setLayout(new GridLayout(7,4,6,6));//设置按键个数及大小 + cal_south.setBorder(BorderFactory.createMatteBorder(0, 4, 5, 4, Color.LIGHT_GRAY)); + for(int i=0;i<28;i++) { JButton btn=new JButton(); btn.setText(Btns[i]); btn.setBackground(Color.WHITE); - btn.setFont(new Font("楷体",Font.BOLD,14)); + btn.setFont(new Font("楷体",Font.BOLD,15)); + btn.setBorderPainted(false); if(Btns[i].matches(num)) { - btn.setFont(new Font("黑体",Font.BOLD,18));//把数字加粗放大 + btn.setFont(new Font("黑体",Font.BOLD,20));//把数字加粗放大 } else if(Btns[i].matches(sigh)) { btn.setBackground(Color.GRAY); @@ -65,9 +92,9 @@ public class Calculator extends JFrame implements ActionListener{ btn.setForeground(Color.WHITE); } btn.addActionListener(this); - cal_center.add(btn); - } - this.add(cal_center,BorderLayout.CENTER); + cal_south.add(btn); + } + this.add(cal_south,BorderLayout.SOUTH); } public static void main(String[] args) { -- Gitee From 75510baaf432b02a80c1f048ea0afe9a3e033b3b Mon Sep 17 00:00:00 2001 From: Azure Tans <911974741@qq.com> Date: Tue, 7 Jun 2022 00:34:07 +0800 Subject: [PATCH 5/6] =?UTF-8?q?=E5=A4=A7=E5=8A=9F=E5=91=8A=E6=88=90?= =?UTF-8?q?=EF=BC=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Calculator.java | 162 +++++++++++++++++++++++++---- 1 file changed, 142 insertions(+), 20 deletions(-) diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java index 274d7a1..0ddf191 100644 --- a/src/java2022spring/Calculator.java +++ b/src/java2022spring/Calculator.java @@ -15,14 +15,31 @@ public class Calculator extends JFrame implements ActionListener{ private JPanel cal_south =new JPanel();//南面布局 private JTextField cal_input =new JTextField("0");//输入框(中 private JTextField cal_process =new JTextField();//过程框(北 + private JMenuBar Menu=new JMenuBar(); public Calculator() throws HeadlessException { this.win(); this.win_NORTH(); this.win_CENTER(); this.win_Button(); + this.menu(); } + //创建菜单 + public void menu(){ + JMenu btn1=new JMenu("查看"); + JMenu btn2=new JMenu("编辑"); + JMenu btn3=new JMenu("帮助"); + JMenu btn4=new JMenu("更多"); + Menu.add(btn1); + Menu.add(btn2); + Menu.add(btn3); + Menu.add(btn4); + Menu.setBackground(Color.LIGHT_GRAY); + Menu.setBorder(BorderFactory.createMatteBorder(0, 3, 0, 3, Color.LIGHT_GRAY)); + this.setJMenuBar(Menu); + } + //创建窗体 public void win() { this.setTitle("计算器"); @@ -33,6 +50,7 @@ public class Calculator extends JFrame implements ActionListener{ this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null);//使窗体居中 this.cal_input.setHorizontalAlignment(JTextField.RIGHT);//输入内容右对齐 + this.cal_process.setHorizontalAlignment(JTextField.RIGHT);//输入内容右对齐 } //添加输入框 @@ -50,20 +68,20 @@ public class Calculator extends JFrame implements ActionListener{ public void win_NORTH() { cal_north.setLayout(new BorderLayout()); - cal_north.add(cal_process);//把过程框加入中间布局 + cal_north.add(cal_process);//把过程框加入北面布局 Dimension process_size=new Dimension(280,30);//设置过程框大小 cal_process.setPreferredSize(process_size);//将大小应用至输入框 this.add(cal_north,BorderLayout.NORTH); cal_process.setBackground(Color.LIGHT_GRAY); - cal_process.setFont(new Font("黑体",Font.BOLD,10)); + cal_process.setFont(new Font("黑体",Font.BOLD,30)); cal_process.setBorder(null); //删除输入框的边框 cal_process.setEditable(false); //不能修改结果文本框 - cal_north.setBorder(BorderFactory.createMatteBorder(10, 3, 5, 3, Color.LIGHT_GRAY)); + cal_north.setBorder(BorderFactory.createMatteBorder(5, 3, 5, 3, Color.LIGHT_GRAY)); } //添加按钮 public void win_Button() { - String [] Btns= {"%","CE","C","←","n!","aⁿ","cos","sin","1/x","x²","√x","÷","7","8","9","×","4","5","6","-","1","2","3","+","±","0",".","="}; + String [] Btns= {"%","CE","C","←","n!","e^x","cos","sin","1/x","x^2","√x","÷","7","8","9","×","4","5","6","-","1","2","3","+","±","0",".","="}; String num="[1234567890]"; String sigh="[\\+\\-\\×\\÷]"; String reset="[C←]"; @@ -73,12 +91,16 @@ public class Calculator extends JFrame implements ActionListener{ for(int i=0;i<28;i++) { JButton btn=new JButton(); btn.setText(Btns[i]); - btn.setBackground(Color.WHITE); + btn.setBackground(new Color(232, 232, 232)); btn.setFont(new Font("楷体",Font.BOLD,15)); btn.setBorderPainted(false); if(Btns[i].matches(num)) { + btn.setBackground(new Color(245,245,245)); btn.setFont(new Font("黑体",Font.BOLD,20));//把数字加粗放大 } + if(Btns[i]=="±"||Btns[i]==".") { + btn.setBackground(new Color(245,245,245)); + } else if(Btns[i].matches(sigh)) { btn.setBackground(Color.GRAY); btn.setForeground(Color.white); @@ -103,27 +125,125 @@ public class Calculator extends JFrame implements ActionListener{ } //为按键添加功能 - private String firstInput=null; - private String operation=null; + private String firstInput=null;//中间过程 + private String operation=null;//运算符 + private boolean judge= true;//判断 + private double result = 0; + private String result_string=null; @Override public void actionPerformed(ActionEvent e) { - String input=e.getActionCommand(); - if("0123456789.".indexOf(input)!=-1) { - this.cal_input.setText(cal_input.getText()+input);//可从左至右输入数据 + String input=e.getActionCommand(); + String store=cal_input.getText(); + + //处理数字 + if("0123456789".indexOf(input)!=-1) { + if(judge) { + cal_input.setText(null); + cal_input.setText(input); + } + else { + this.cal_input.setText(store+input);//可从左至右输入数据 } + judge=false; + } + + //处理. + else if((input.equals("."))&&(store.indexOf(".")==-1)) { + cal_input.setText(store+ "."); + } + + + //处理CE、C、← else if(input.equals("CE")) { - cal_input.setText(""); + cal_input.setText("0"); + } + else if(input.equals("C")) { + cal_input.setText("0"); + cal_process.setText(null); + judge=true; + } + else if(input.equals("←")) { + if(store.length()>0) { + store=store.substring(0,store.length()-1); + if (store.length() == 0) { + cal_input.setText("0"); + judge=true; + } + else { + cal_input.setText(store); + } + } + } + + //处理%、± + else if((input.equals("%"))) { + result=(Double.valueOf(cal_input.getText()).doubleValue())*0.01; + result_string=Double.toString(result); + this.cal_input.setText(result_string); + } + else if((input.equals("±"))) { + result=(Double.valueOf(cal_input.getText()).doubleValue())*(-1); + result_string=Double.toString(result); + this.cal_input.setText(result_string); } - else if(input.matches("[\\+\\-\\×\\÷\\%]{1}")){ //{1}是其中一个的意思 + + //处理n!,e^x,cos,sin,1/x,x^2,√x + else if(input.equals("n!")||input.equals("e^x")||input.equals("cos")||input.equals("sin")||input.equals("1/x")||input.equals("x^2")||input.equals("√x")){ + result=(Double.valueOf(cal_input.getText()).doubleValue()); + if(input.equals("n!")) { + int factorial=1; + for (int i=1;i<=result; i++) { + factorial=factorial*i; + } + result=factorial; + cal_process.setText(store+"!"+"="); + } + else if(input.equals("e^x")) { + result=Math.pow(Math.E, result); + cal_process.setText("e^"+store+"="); + } + else if(input.equals("cos")) { + result=Math.cos(result); + cal_process.setText("cos"+store+"="); + } + else if(input.equals("sin")) { + result=Math.sin(result); + cal_process.setText("sin"+store+"="); + } + else if(input.equals("x^2")) { + result=result*result; + cal_process.setText(store+"^2="); + } + else if(input.equals("√x")) { + result=Math.sqrt(result); + cal_process.setText("√"+store+"="); + } + else if(input.equals("1/x")) { + if (result==0) { + cal_input.setText("除数不能为零"); + } + else { + result= 1/result; + cal_process.setText("1/("+cal_input.getText()+")="); + } + } + result_string=Double.toString(result); + this.cal_input.setText(result_string); + judge=true; + } + + //处理+-×÷ + else if(input.matches("[\\+\\-\\×\\÷]{1}")){ //{1}是其中一个的意思 operation=input; firstInput=this.cal_input.getText(); this.cal_input.setText(""); + if (input.matches("[\\+\\-\\×\\÷]{1}")){ + cal_process.setText(store+input); + } } else if (input.equals("=")) { double a=Double.valueOf(firstInput); - double b=Double.valueOf(this.cal_input.getText()); - double result=0; - String result_string; + double b=Double.valueOf(this.cal_input.getText()); switch(operation) { case"+": result=a+b; @@ -137,16 +257,18 @@ public class Calculator extends JFrame implements ActionListener{ case"÷": if(b!=0) result=a/b; - break; - case"%": - if(b!=0) - result=a%b; - break; + break; } + cal_process.setText(firstInput+operation+this.cal_input.getText()+"="); + result_string=Double.toString(result); this.cal_input.setText(result_string); + judge=true; } + } } + + -- Gitee From 6373d2f916c4d926b21cc9c08ad92aad73301568 Mon Sep 17 00:00:00 2001 From: Azure Tans <911974741@qq.com> Date: Tue, 7 Jun 2022 23:26:20 +0800 Subject: [PATCH 6/6] =?UTF-8?q?=E6=9C=80=E7=BB=88=E7=89=88=E5=AE=8C?= =?UTF-8?q?=E6=88=90=EF=BC=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Calculator.java | 53 +++++++++++++++++------------- 1 file changed, 30 insertions(+), 23 deletions(-) diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java index 0ddf191..b7796cc 100644 --- a/src/java2022spring/Calculator.java +++ b/src/java2022spring/Calculator.java @@ -31,10 +31,12 @@ public class Calculator extends JFrame implements ActionListener{ JMenu btn2=new JMenu("编辑"); JMenu btn3=new JMenu("帮助"); JMenu btn4=new JMenu("更多"); + JMenu btn5=new JMenu("历史"); Menu.add(btn1); Menu.add(btn2); Menu.add(btn3); Menu.add(btn4); + Menu.add(btn5); Menu.setBackground(Color.LIGHT_GRAY); Menu.setBorder(BorderFactory.createMatteBorder(0, 3, 0, 3, Color.LIGHT_GRAY)); this.setJMenuBar(Menu); @@ -86,7 +88,7 @@ public class Calculator extends JFrame implements ActionListener{ String sigh="[\\+\\-\\×\\÷]"; String reset="[C←]"; this.cal_south.setBackground(Color.LIGHT_GRAY); - this.cal_south.setLayout(new GridLayout(7,4,6,6));//设置按键个数及大小 + this.cal_south.setLayout(new GridLayout(7,4,4,4));//设置按键个数及大小 cal_south.setBorder(BorderFactory.createMatteBorder(0, 4, 5, 4, Color.LIGHT_GRAY)); for(int i=0;i<28;i++) { JButton btn=new JButton(); @@ -156,6 +158,7 @@ public class Calculator extends JFrame implements ActionListener{ //处理CE、C、← else if(input.equals("CE")) { cal_input.setText("0"); + judge=true; } else if(input.equals("C")) { cal_input.setText("0"); @@ -175,22 +178,17 @@ public class Calculator extends JFrame implements ActionListener{ } } - //处理%、± - else if((input.equals("%"))) { - result=(Double.valueOf(cal_input.getText()).doubleValue())*0.01; - result_string=Double.toString(result); - this.cal_input.setText(result_string); - } - else if((input.equals("±"))) { - result=(Double.valueOf(cal_input.getText()).doubleValue())*(-1); - result_string=Double.toString(result); - this.cal_input.setText(result_string); - } - - //处理n!,e^x,cos,sin,1/x,x^2,√x - else if(input.equals("n!")||input.equals("e^x")||input.equals("cos")||input.equals("sin")||input.equals("1/x")||input.equals("x^2")||input.equals("√x")){ + //处理%、±、n!,e^x,cos,sin,1/x,x^2,√x + else if(input.equals("%")||input.equals("±")||input.equals("n!")||input.equals("e^x")||input.equals("cos")||input.equals("sin")||input.equals("1/x")||input.equals("x^2")||input.equals("√x")){ result=(Double.valueOf(cal_input.getText()).doubleValue()); - if(input.equals("n!")) { + cal_input.setFont(new Font("黑体",Font.BOLD,25)); + if(input.equals("%")){ + result=result*0.01; + } + else if(input.equals("±")){ + result=result*(-1); + } + else if(input.equals("n!")) { int factorial=1; for (int i=1;i<=result; i++) { factorial=factorial*i; @@ -227,8 +225,13 @@ public class Calculator extends JFrame implements ActionListener{ cal_process.setText("1/("+cal_input.getText()+")="); } } + if((input.equals("1/x"))&&(result==0)) { + cal_input.setText("除数不能为零"); + } + else { result_string=Double.toString(result); - this.cal_input.setText(result_string); + cal_input.setText(result_string); + } judge=true; } @@ -256,19 +259,23 @@ public class Calculator extends JFrame implements ActionListener{ break; case"÷": if(b!=0) - result=a/b; + result=a/b; break; } cal_process.setText(firstInput+operation+this.cal_input.getText()+"="); - - result_string=Double.toString(result); - this.cal_input.setText(result_string); - judge=true; + if((operation=="÷")&&(b==0)) { + cal_input.setText("除数不能为0"); + judge=true; } + else { + result_string=Double.toString(result); + cal_input.setText(result_string); + judge=true; + } } } - +} -- Gitee