From b8cfa1e2b83ad034f82b6d1579075c0845293443 Mon Sep 17 00:00:00 2001 From: zhoufuru <202125710130@qq.com> Date: Mon, 6 Jun 2022 22:16:08 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E6=88=91=E6=98=AF=E4=BF=A1=E7=AE=A11?= =?UTF-8?q?=E7=8F=AD30=E5=8F=B7=E5=91=A8=E9=A6=A5=E5=A6=82=EF=BC=8C?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=B7=B2=E5=AE=8C=E6=88=90=EF=BC=8C=E8=AF=B7?= =?UTF-8?q?=E8=80=81=E5=B8=88=E6=A3=80=E6=9F=A5=E6=89=B9=E9=98=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Test.java | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/java2022spring/Test.java b/src/java2022spring/Test.java index 24deb29..1838a3d 100644 --- a/src/java2022spring/Test.java +++ b/src/java2022spring/Test.java @@ -1,7 +1,13 @@ package java2022spring; +import javax.swing.JFrame; + public class Test { public static void main(String[] args) { System.out.println("Hello world!"); + JFrame window=new JFrame("计算器"); + window.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE); + + } } -- Gitee From 79692e65ccf0407403c348d86b62af6783013147 Mon Sep 17 00:00:00 2001 From: zhoufuru <202125710130@qq.com> Date: Mon, 6 Jun 2022 23:15:25 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E6=88=91=E6=98=AF=E4=BF=A1=E7=AE=A11?= =?UTF-8?q?=E7=8F=AD30=E5=8F=B7=E5=91=A8=E9=A6=A5=E5=A6=82=EF=BC=8C?= =?UTF-8?q?=E9=A1=B9=E7=9B=AE=E5=B7=B2=E5=AE=8C=E6=88=90=EF=BC=8C=E8=AF=B7?= =?UTF-8?q?=E8=80=81=E5=B8=88=E6=A3=80=E6=9F=A5=E6=89=B9=E9=98=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/java2022spring/Main.java | 284 +++++++++++++++++++++++++++++++++++ 1 file changed, 284 insertions(+) create mode 100644 src/java2022spring/Main.java diff --git a/src/java2022spring/Main.java b/src/java2022spring/Main.java new file mode 100644 index 0000000..45c6d98 --- /dev/null +++ b/src/java2022spring/Main.java @@ -0,0 +1,284 @@ +package java2022spring; + +import java.awt.BorderLayout; +import java.awt.Color; +import java.awt.Dimension; +import java.awt.EventQueue; +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.LineBorder; + +public class Main implements ActionListener { + + JTextField tf;//文本框 + JButton bt; + String btText[]= {"±","CE","C","delete", + "7","8","9","/", + "4","5","6","*", + "1","2","3","-", + "0",".","=","+", + "√","^2","^3","%" + }; + private boolean firstDigit=true;//firstDigit为true真时代表输入为第一个数字 + private String operation=null;//如果operation的值为null时,表示为按下数字之后的第一次按运算符,此时,将所输入的数字保存在变量num1中,然后清空文本框;若operation不为null,表明计算器在做累积运算 + double num1,num2; + + + + public static void main(String args[]) { + + EventQueue.invokeLater(new Runnable() { + public void run() { + try { + Main app=new Main(); + app.window(); + }catch (Exception e) + {e.printStackTrace(); + } + } + }); + } + + void window(){ + JFrame window=new JFrame("计算器");//新建一个窗口 + window.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//释放窗口 + + tf=new JTextField();//新建文本框 + tf.setPreferredSize(new Dimension(395,80));//设置文本框大小 + + bt=new JButton(); + + window.getContentPane().add(tf,BorderLayout.NORTH); + window.getContentPane().add(bt,BorderLayout.CENTER); + + + //添加面板 + JPanel pan=new JPanel(); + pan.setLayout(new GridLayout(6,4) );//4行4列面板 + for(int i=0;i<24;i++){ + JButton bt=new JButton(btText[i]); + + pan.add(bt); + + bt.addActionListener(this); + bt.setBorder(new LineBorder(Color.BLACK,1));//设置按钮边框为 黑色,厚度为1 + } + window.getContentPane().add(pan,BorderLayout.CENTER); + + window.setSize(400, 500);//设置窗口大小 + window.setVisible(true);//设置为可视化 + window.setResizable(false);//不可调窗口大小 + } + //一个清零的方法 + private void clean() { + tf.setText(null); + operation=null; + firstDigit=true; + } + @Override + public void actionPerformed(ActionEvent e) { + String str=e.getActionCommand(); + String text=tf.getText(); + + //清除键"C" + if(str.equals(btText[2])) { + clean(); + num1=0.0; + num2=0.0; + } + //CE键 + else if(str.equals(btText[1])) { + if(operation==null) { + clean();//在按下符号键之前和C键的功能一样 + } + else { + tf.setText(null); + } + } + //删除键“delete" + else if(str.equals(btText[3])) { + int num=text.length(); + if(num==0) { + tf.setText("请输入数字"); + operation=null; + firstDigit=true; + } + else { + text=text.substring(0,num-1); + tf.setText(text); + } + } + //百分号键"%" + else if(str.equals(btText[23])) { + if(text.length()==0) { + tf.setText("请输入数字"); + operation=null; + firstDigit=true; + } + else if("0123456789.".indexOf(text)==-1) { + Double percentage=Double.parseDouble(text); + percentage=percentage/100; + String percentage_result=String.valueOf(percentage); + tf.setText(percentage_result); + } + } + //数字键和小数点 + else if("0123456789.".indexOf(str)>=0) { + if(firstDigit==true) { + if(str.equals(".")) { + tf.setText("0"+str); + } + else { + tf.setText(str); + } + } + else if(str=="."&&tf.getText().indexOf(".")<0) { + tf.setText(tf.getText()+str); + } + else if(str!=".") { + tf.setText(tf.getText()+str); + } + firstDigit=false; + } + //根号键"√" + else if(str.equals(btText[20])) { + //if(text.length()==0) { + if("0123456789.".indexOf(text)==-1) { + tf.setText("请输入数字"); + operation=null; + firstDigit=true; + } + else { + Double sqrt_str=Double.parseDouble(text); + if(text.startsWith("-")) { + tf.setText("负数在实数系内没有平方根"); + firstDigit=true; + //错误处理功能 + } + else { + sqrt_str=Math.sqrt(sqrt_str); + tf.setText(String.valueOf(sqrt_str)); + } + } + } + //平方键"^2" + else if(str.equals(btText[21])) { + if(text.length()==0) { + tf.setText("请输入数字"); + operation=null; + firstDigit=true; + } + else { + Double square=Double.parseDouble(text); + square=square*square; + String square_result=String.valueOf(square); + tf.setText(square_result); + } + } + //立方键"^3" + else if(str.equals(btText[22])) { + if(text.length()==0) { + tf.setText("请输入数字"); + operation=null; + firstDigit=true; + } + else{ + Double cube=Double.parseDouble(text); + cube=cube*cube*cube; + String cube_result=String.valueOf(cube); + tf.setText(cube_result); + } + } + //加减乘除键 + else if("+-*/".indexOf(str)>=0) { + if(operation==null) { + num1=Double.valueOf(tf.getText()); + tf.setText(null); + firstDigit=true; + operation=str; + } + else { + if(text==null) { + operation=str; + tf.setText(String.valueOf(num1)); + } + if(operation.equals(btText[19])) { + num1=num1+Double.valueOf(tf.getText()); + tf.setText(null); + firstDigit=true; + } + if(operation.equals(btText[15])) { + num1=num1-Double.valueOf(tf.getText()); + tf.setText(null); + firstDigit=true; + } + if(operation.equals(btText[11])) { + num1=num1*Double.valueOf(tf.getText()); + tf.setText(null); + firstDigit=true; + } + if(operation.equals(btText[7])) { + num1=num1/Double.valueOf(tf.getText()); + tf.setText(null); + firstDigit=true; + } + operation=str; + } + } + //等于号键 + else if(str.equals(btText[18])) { + if(text==null) { + num2=0.0; + } + else { + if(operation==null) { + num1=Double.valueOf(text); + tf.setText(String.valueOf(num1)); + } + num2=Double.valueOf(text); + if(operation.equals(btText[19])) { + num1=num1+num2; + tf.setText(String.valueOf(num1)); + } + if(operation.equals(btText[15])) { + num1=num1-num2; + tf.setText(String.valueOf(num1)); + } + if(operation.equals(btText[11])) { + num1=num1*num2; + tf.setText(String.valueOf(num1)); + } + if(operation.equals(btText[7])) { + if(num2!=0.0) { + num1=num1/num2; + tf.setText(String.valueOf(num1)); + } + else { + tf.setText("0不能作为除数"); + firstDigit=true; + } + } + operation=null; + } + } + //正负号键 + else if(str.equals(btText[0])) { + if(text.length()==0) { + tf.setText("请输入数字"); + firstDigit=true; + } + else { + Double before=Double.parseDouble(text); + before=-before; + tf.setText(String.valueOf(before)); + } + } + } +} + \ No newline at end of file -- Gitee