diff --git a/src/Calculator/Calculator.java b/src/Calculator/Calculator.java new file mode 100644 index 0000000000000000000000000000000000000000..f0f2b37126fa45872850644cd67a1ab47e24ba6d --- /dev/null +++ b/src/Calculator/Calculator.java @@ -0,0 +1,169 @@ +package Calculator; +import java.awt.*; +import javax.swing.*; +import java.awt.event.ActionEvent; +import java.awt.event.ActionListener; +public class Calculator extends JFrame implements ActionListener{ + JTextField text; + JPanel panel; + JButton [][] button=new JButton[5][5]; + JMenuBar menubar; + JMenu menu1,menu2,menu3; + + Calculator(){ + init(); + setVisible(true); + setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); + validate(); + + } + void init(){ + setTitle("计算器"); + setBounds(100,100,600,680); + setLayout(new BorderLayout()); + + menubar=new JMenuBar(); //添加菜单项 + menu1=new JMenu("编辑(E)"); + menu2=new JMenu("查看(V)"); + menu3=new JMenu("帮助(H)"); + menubar.add(menu1); + menubar.add(menu2); + menubar.add(menu3); + setJMenuBar(menubar); + + String [][] str= { //添加按钮 + {"Backspace","C","CE","x^y","log"}, + {"7","8","9","/","sqrt"}, + {"4","5","6","*","%"}, + {"1","2","3","-","+/-"}, + {"00","0",".","+","="} + }; + panel=new JPanel(); + panel.setLayout(new GridLayout(5,5)); + for(int i=0;i<5;i++) { + for(int j=0;j<5;j++) { + button[i][j]=new JButton(str[i][j]); + panel.add(button[i][j]); + button[i][j].setBackground(new Color(238,247,196));//设置按钮的背景颜色为绿色 + button[i][j].setFont(new Font("微软雅黑", Font.BOLD, 16)); //设置按钮字体、样式、大小 + button[i][j].addActionListener(this);//给所有按钮加上监听器 + } + } + add(panel,BorderLayout.CENTER); + + text=new JTextField(); + add(text,BorderLayout.NORTH); //添加文本框 + text.setPreferredSize(new Dimension (400,100));//设置文本框大小 + text.setFont(new Font("微软雅黑", Font.PLAIN, 50)); //设置字体、样式、大小 + } + + + String Mem="0";//储存值 + String number=null; + String fuhao=null; + String regex="[^.0123456789=]x?\\p{Punct}?y?[logsqrt]*"; + public void actionPerformed(ActionEvent e) { + String str=e.getActionCommand(); + if(".00123456789".indexOf(str)!=-1) { + this.text.setText(text.getText()+str); //使文本框能够同时显示多个数字 + } + else if(str.matches(regex)) { + fuhao=str;// + number=this.text.getText(); + this.text.setText(""); + } + else if(str.equals("=")) { + double a; + double b; + double result = 1; + if(fuhao.equals("+")) {//加 + a=Double.valueOf(number); + b=Double.valueOf(text.getText()); + result=a+b; + text.setText(String.valueOf(result)); + } + else if(fuhao.equals("-")) { //减 + a=Double.valueOf(number); + b=Double.valueOf(text.getText()); + result=a-b; + text.setText(String.valueOf(result)); + } + else if(fuhao.equals("*")) { //乘 + a=Double.valueOf(number); + b=Double.valueOf(text.getText()); + result=a*b; + text.setText(String.valueOf(result)); + } + else if(fuhao.equals("/")) { //除 + a=Double.valueOf(number); + b=Double.valueOf(text.getText()); + if(b!=0) { + result=a/b; + text.setText(String.valueOf(result)); + } + else + text.setText("除数不能为0"); + + } + else if(fuhao.equals("%")) { //求余 + a=Double.valueOf(number); + b=Double.valueOf(text.getText()); + if(b!=0) { + result=a%b; + text.setText(String.valueOf(result)); + } + else + text.setText("除数不能为0"); + + } + else if(fuhao.equals("x^y")) { //幂 + a=Double.valueOf(number); + b=Double.valueOf(text.getText()); + for(int i=0;i=0) { + result=Math.sqrt(a); + text.setText(String.valueOf(result)); + } + else + text.setText("根号内不能为负"); + } + else if(fuhao.equals("log")) { //对数 + a=Double.valueOf(number); + result=Math.log(a); + text.setText(String.valueOf(result)); + } + + + } + if(str.equals("C")) //清空所有 + str=null; + else if(str.equals("Backspace")) { //退格键 + str=text.getText().substring(0,text.getText().length()-1); + text.setText(str); + if(str.equals("")){ + text.setText(" "); + } + } + else if(str.equals("CE")) { //局部清除 + if(text.getText()!=null) + text.setText(""); + } + else if(str.equals("+/-")) { //更改正负号 + String regex1="-?[.0123456789]+"; + if(text.getText().matches(regex1)) { + double num1=Double.valueOf(text.getText()); + num1=0-num1; + text.setText(String.valueOf(num1)); + } + + } + + } + +} diff --git a/src/Calculator/MainClass.java b/src/Calculator/MainClass.java new file mode 100644 index 0000000000000000000000000000000000000000..b915c633d2e565e53e3e297ff1b1979257818639 --- /dev/null +++ b/src/Calculator/MainClass.java @@ -0,0 +1,8 @@ +package Calculator; + +public class MainClass { + public static void main(String srgs[]) { + new Calculator(); + } + +}