From 23065c827c37db1f6ebd94a898a81e7b10eaa9d6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B4=BC=E6=B4=BC?= <洼洼@LAPTOP-US8QE6QN> Date: Wed, 8 Jun 2022 11:02:30 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=88=91=E6=98=AF=E4=BF=A1=E7=AE=A13?= =?UTF-8?q?=E7=8F=AD=E7=9A=84=E9=83=AD=E5=96=84=E6=AC=A3=EF=BC=8C=E8=AE=BE?= =?UTF-8?q?=E8=AE=A1=E6=80=A7=E8=AF=95=E9=AA=8C=E9=A1=B9=E7=9B=AE=E5=B7=B2?= =?UTF-8?q?=E5=A4=A7=E8=87=B4=E5=AE=8C=E6=88=90=EF=BC=8C=E8=AF=B7=E8=80=81?= =?UTF-8?q?=E5=B8=88=E6=A3=80=E6=9F=A5=E6=89=B9=E9=98=85=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Calculator.java | 290 +++++++++++++++++++++++++++++ 1 file changed, 290 insertions(+) create mode 100644 src/java2022spring/Calculator.java diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java new file mode 100644 index 0000000..6edf801 --- /dev/null +++ b/src/java2022spring/Calculator.java @@ -0,0 +1,290 @@ +package java2022spring; +//202125710307郭善欣 + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.GridLayout; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +import javax.swing.JButton; +import javax.swing.JFrame; +import javax.swing.JPanel; +import javax.swing.JTextField; +import javax.swing.border.EmptyBorder; + +@SuppressWarnings("serial") +public class Calculator extends JFrame implements ActionListener{ + private JPanel pan; + private JTextField resultbox;//最上面那个文本框 + String []labels= {"%","√x","x²","1/x","C","CE","x³","÷","7","8","9","×","4","5","6","-","1","2","3","+","±","0",".","="};//按钮名字 + JButton buttons[]=new JButton[labels.length];//按钮 + private boolean firstDigit=true; + Double num1,num2; + private String operation=null; + + public static void main(String[] args) { + Calculator frame = new Calculator(); + frame.setTitle("温柔计算器"); + frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + frame.setVisible(true); //设置可视 + frame.setSize(300,300); //设置大小 + } + + //构造方法↓ + public Calculator() { + Color color=new Color(130,248,201);//按钮颜色 + pan = new JPanel();//初始化面板 + pan.setBorder(new EmptyBorder(15,15,10,15)); + pan.setLayout(new BorderLayout(0, 0)); + setContentPane(pan); + resultbox = new JTextField(); + pan.add(resultbox, BorderLayout.NORTH);//把文本框加到面板上去 + resultbox.setPreferredSize(new Dimension(300,60));//设置文本框的大小 + resultbox.setHorizontalAlignment(JTextField.RIGHT);//设置文本框右对齐 + JPanel panb = new JPanel(); + pan.add(panb, BorderLayout.CENTER); + panb.setLayout(new GridLayout(6,4,7,7)); + for(int i=0;i= 0) { + if(firstDigit==true) { + if(str.equals(".")) { + resultbox.setText("0"+str); + } + else { + resultbox.setText(str); + } + } + else if(str=="."&&resultbox.getText().indexOf(".")<0) { + resultbox.setText(resultbox.getText()+str); + } + else if(str!="."){ + resultbox.setText(resultbox.getText()+str); + } + firstDigit=false; + } + + //"+","-", ×","÷" + else if("+-×÷".indexOf(str)!=-1) { + if(operation==null) { + num1=Double.valueOf(resultbox.getText()); + resultbox.setText(null); + firstDigit=true; + operation=str; + } + else { + if(text==null) { + operation=str; + resultbox.setText(String.valueOf(num1)); + } + if(operation.equals(labels[19])) { + num1=num1+Double.valueOf(resultbox.getText()); + resultbox.setText(null); + firstDigit=true; + } + if(operation.equals(labels[15])) { + num1=num1-Double.valueOf(resultbox.getText()); + resultbox.setText(null); + firstDigit=true; + } + if(operation.equals(labels[11])) { + num1=num1*Double.valueOf(resultbox.getText()); + resultbox.setText(null); + firstDigit=true; + } + if(operation.equals(labels[7])) { + num1=num1/Double.valueOf(resultbox.getText()); + resultbox.setText(null); + firstDigit=true; + } + operation=str; + } + } + + //"=" + else if(str.equals(labels[23])) { + if(text==null) { + num2=0.0; + } + else { + if(operation==null) { + num1=Double.valueOf(text); + resultbox.setText(String.valueOf(num1)); + } + num2=Double.valueOf(text); + + if(operation.equals(labels[19])) { + num1=num1+num2; + resultbox.setText(String.valueOf(num1)); + } + if(operation.equals(labels[15])) { + num1=num1-num2; + resultbox.setText(String.valueOf(num1)); + } + if(operation.equals(labels[11])) { + num1=num1*num2; + resultbox.setText(String.valueOf(num1)); + } + if(operation.equals(labels[7])) { + if(num2!=0.0) { + num1=num1/num2; + resultbox.setText(String.valueOf(num1)); + } + else{ + resultbox.setText("宝,零不可以被除耶~"); + firstDigit=true; + } + } + operation=null; + } + } + + //± + else if(str.equals(labels[20])){ + if(text.length()==0) { + resultbox.setText("乖乖在这里输入数字哦~"); + firstDigit=true; + } + else { + Double before=Double.parseDouble(text); + before=-before; + resultbox.setText(String.valueOf(before)); + } + } +} +} -- Gitee From 92022633ca95cc20d4b451d981bf223875c2efc2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=B4=BC=E6=B4=BC?= <洼洼@LAPTOP-US8QE6QN> Date: Thu, 9 Jun 2022 16:57:30 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=88=91=E6=98=AF=E4=BF=A1=E7=AE=A13?= =?UTF-8?q?=E7=8F=AD7=E5=8F=B7=E9=83=AD=E5=96=84=E6=AC=A3=EF=BC=8C?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=B7=B2=E5=AE=8C=E6=88=90=EF=BC=8C=E5=AF=B9?= =?UTF-8?q?=E6=AF=94=E4=B8=8A=E4=B8=80=E6=AC=A1=E6=8F=90=E4=BA=A4=E8=A7=A3?= =?UTF-8?q?=E5=86=B3=E4=BA=86=E7=B2=BE=E5=BA=A6=E6=8D=9F=E5=A4=B1=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98=EF=BC=8C=E5=87=8F=E5=B0=91=E4=BA=86=E8=AF=AF?= =?UTF-8?q?=E5=B7=AE=EF=BC=8C=E8=AF=B7=E8=80=81=E5=B8=88=E6=A3=80=E6=9F=A5?= =?UTF-8?q?=E6=89=B9=E9=98=85=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Calculator.java | 40 +++++++++++++++++++----------- 1 file changed, 26 insertions(+), 14 deletions(-) diff --git a/src/java2022spring/Calculator.java b/src/java2022spring/Calculator.java index 6edf801..00d7a4a 100644 --- a/src/java2022spring/Calculator.java +++ b/src/java2022spring/Calculator.java @@ -7,6 +7,8 @@ import java.awt.Dimension; import java.awt.GridLayout; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; +import java.math.BigDecimal; + import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JPanel; @@ -31,7 +33,7 @@ public class Calculator extends JFrame implements ActionListener{ frame.setSize(300,300); //设置大小 } - //构造方法↓ +//构造方法↓ public Calculator() { Color color=new Color(130,248,201);//按钮颜色 pan = new JPanel();//初始化面板 @@ -55,7 +57,7 @@ public class Calculator extends JFrame implements ActionListener{ } } - //计算↓ +//计算↓ private void clean() {//清除 resultbox.setText(null); operation=null; @@ -92,8 +94,6 @@ public void actionPerformed(ActionEvent e) { //"√x" else if(str.contentEquals(labels[1])) { if(text.length()==0) { - //if("0123456789.".indexOf(text)==-1) { - resultbox.setText("乖乖在这里输入数字哦~"); operation=null; firstDigit=true; @@ -199,7 +199,7 @@ public void actionPerformed(ActionEvent e) { firstDigit=false; } - //"+","-", ×","÷" + //"+","-","×","÷" else if("+-×÷".indexOf(str)!=-1) { if(operation==null) { num1=Double.valueOf(resultbox.getText()); @@ -213,17 +213,23 @@ public void actionPerformed(ActionEvent e) { resultbox.setText(String.valueOf(num1)); } if(operation.equals(labels[19])) { - num1=num1+Double.valueOf(resultbox.getText()); - resultbox.setText(null); - firstDigit=true; + BigDecimal b1 = new BigDecimal(Double.toString(num1)); + BigDecimal b2 = new BigDecimal(Double.toString(Double.valueOf(resultbox.getText()))); + num1= b1.add(b2).doubleValue(); + resultbox.setText(null); + firstDigit=true; } if(operation.equals(labels[15])) { - num1=num1-Double.valueOf(resultbox.getText()); + BigDecimal b1 = new BigDecimal(Double.toString(num1)); + BigDecimal b2 = new BigDecimal(Double.toString(Double.valueOf(resultbox.getText()))); + num1= b1.subtract(b2).doubleValue(); resultbox.setText(null); firstDigit=true; } if(operation.equals(labels[11])) { - num1=num1*Double.valueOf(resultbox.getText()); + BigDecimal b1 = new BigDecimal(Double.toString(num1)); + BigDecimal b2 = new BigDecimal(Double.toString(Double.valueOf(resultbox.getText()))); + num1= b1.multiply(b2).doubleValue(); resultbox.setText(null); firstDigit=true; } @@ -249,16 +255,22 @@ public void actionPerformed(ActionEvent e) { num2=Double.valueOf(text); if(operation.equals(labels[19])) { - num1=num1+num2; + BigDecimal b1 = new BigDecimal(Double.toString(num1)); + BigDecimal b2 = new BigDecimal(Double.toString(Double.valueOf(resultbox.getText()))); + num1= b1.add(b2).doubleValue(); resultbox.setText(String.valueOf(num1)); } if(operation.equals(labels[15])) { - num1=num1-num2; + BigDecimal b1 = new BigDecimal(Double.toString(num1)); + BigDecimal b2 = new BigDecimal(Double.toString(Double.valueOf(resultbox.getText()))); + num1= b1.subtract(b2).doubleValue(); resultbox.setText(String.valueOf(num1)); } if(operation.equals(labels[11])) { - num1=num1*num2; - resultbox.setText(String.valueOf(num1)); + BigDecimal b1 = new BigDecimal(Double.toString(num1)); + BigDecimal b2 = new BigDecimal(Double.toString(Double.valueOf(resultbox.getText()))); + num1= b1.multiply(b2).doubleValue(); + resultbox.setText(String.valueOf(num1)); } if(operation.equals(labels[7])) { if(num2!=0.0) { -- Gitee