zoukankan      html  css  js  c++  java
  • JAVA---编写计算器

    import javax.swing.*;

    import javax.swing.JTextField;

    import java.awt.*;

    import java.awt.event.*;

    import java.lang.*;

    import java.awt.Color;

    public class Jisuanqi extends JFrame implements ActionListener{

    private JPanel p1=new JPanel();//创建面板

    private JPanel p2=new JPanel();

    private JTextField t1;//文本框1用来显示输入信息

    private JTextField t2;//文本框2用来显示结果信息

    private JLabel label;//标签信息

    StringBuffer str;//显示屏显示的字符

    double x,y;//x和y都是运算数

    int z;      //z表示单击那个运算符,0表示+,1表示-,2表示*,3表示 /

    private JButton b[]=new JButton[12];//创建一个有12个按钮的数组

    private JButton b1,b2,b3,b4,b5,b6,b7,b8;//算术功能按钮

     

    public Jisuanji(){

                  super("简易计算器"); //窗口名称

                  Container c=getContentPane();//创建内容面板对象

                  t1=new JTextField(30);

                  t1.setEditable(false);//只能显示,不能编辑

                   t2=new JTextField(30);

                  t2.setEditable(false);//只能显示,不能编辑

                   label=new Label("欢迎使用小计算器");

                   label.setForeground(Color.blue);

                  //创建一个空字符串缓冲区

                  str=new StringBuffer();//添加标签到面板

                  p2.add(label);//添加标签到面板

                  p2.add(t2);//添加文本框到面板

                  p2.add(t1);//添加文本框到面板

                  p2.setLayout(new GridLayout(4,1));//把面板布局为4行1列

                  for(int i=0;i<10;i++){   //分别为数组中0~9号按钮设置标签,并注册监听器

                           String s=""+i;

                           b[i]=new JButton(s);

                            b[i].addActionListener(this);

                                  }

                     //实例化各个按钮

                   b[10]=new JButton("-/+");b[11]=new JButton(".");

                    b1=new JButton("/");  b2=new JButton("Back");

                     b3=new JButton("*");  b4=new JButton("C");

                     b5=new JButton("+"); b6=new JButton("Sqrt");

                     b7=new JButton("-"); b8=new JButton("=");

                     //设置按钮前颜色

                for(int i=0;i<12;i++){

                       b[i].setForegound(Color.blue);

                                  }

                 b1.setForeground(Color.red);  b3.setForeground(Color.red);

        b5.setForeground(Color.red);  b7.setForeground(Color.red);
        b2.setForeground(Color.blue);  b4.setForeground(Color.blue);
        b6.setForeground(Color.red);   b8.setForeground(Color.blue);

                     //添加到面板

                   p1.add(b[7]);p1.add(b[8]);p1.add(b[9]);p1.add(b1);p1.add(b2);

                   p1.add(b[4]);p1.add(b[5]);p1.add(b[6]);p1.add(b3);p1.add(b4);

                    p1.add(b[1]);p1.add(b[2]);p1.add(b[3]);p1.add(b5);p1.add(b6);

                    p1.add(b[0]);p1.add(b[10]);p1.add(b[11]);p1.add(b7);p1.add(b8);

                     p1.setLayout(new GridLayout(4,5,5,5));

                  //注册监听器

                b[10]addActionListener(this);b[11].addActionListener(this);

                b1.addActionListener(this);b2.addActionListener(this);

                b3.addActionListener(this);b4.addActionListener(this);

                b5.addActionListener(this);b6.addActionListener(this);

                 b7.addActionListener(this);b8.addActionListener(this);

                //将面板添加到内容面板

                 c.add(p2);

                 c.add(p1);

                 c.setLayout(new FlowLayout());//设置顺序布局

                  setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//设置窗口关闭动作

                  setVisible(true);//设置为可见

                   setResizable(false);//禁止调整框架大小

                    setSize(400,300);//设置窗口大小

                    }

                    //主方法实现创建一个窗口

                  public static void main(String[]args){

                           Jisuanqi f=new Jisuanqi();

                                           }

                //按钮的事件处理

                public void actionPerformed(ActionEvent e){

                                 try{

                                          if(e.getSource()==b4){    //选择C清零

                                                       t1.setText("0");//把文本框清零

                                                       t1.setHorizontalAlignment(JTextField.LEFT);//文本左对齐

                                                        str.setLength(0);//清空字符串缓冲区

                                                          }

                                              else if(e.getSource()==b[10]){              //单击“+/-”,选择输入的数是正数还是负数

                                               x=Double.parseDouble(t1.getText().trim());//trim函数的作用是去掉字符串中的空格                       t1.setText(""+(-x));

                                                t1.setHorizontalAlignment(JTextField.LEFT);

                                                     }

                                                  else if(e.getSource()==b5){          //点击加号按钮获取x和z的值,并清空y值

                                               x=Double.parseDouble(t1.getText().trim());

                                                str.setLength(0);

                                                y=0d;

                                                z=0;

                                               }

                               else if(e.getSource()==b7){              //单击减号获得x和z的值,并清空y值

                                             x=Double.parseDouble(t1.getText().trim());

                                             str.setLength(0);

                                              y=0d;

                                              z=1;

                                                    }

                                 else if(e.getSource()==b3){             //单击乘号按钮获得x和z的值,并清空有的值

                                          x=Double.parseDouble(t1.getText().trim());

                                           str.length(0);

                                           y=0d;

                                            z=2;

                                                  }

                                           else if(e.getSource()==b1){            //单击除号按钮获得x的值和z值的

                                                 x=Double.parseDouble(t1.getText().trim());

                                                 str.setLength(0);

                                                  y=0d;

                                                  z=3;

                                                         }

                                           else if(e.getSource()==b8{           //单击等号按钮输出计算结果

                                                 str.length(0);

                                                  seitch(z){

                                                    case 0: t1.setText(""+(x+y)); t1.setHorizontalAlignment(JTextField.LEFT);break;

                                                    case 1: t1.setText(""+(x-y)); t1.setHorizontalAlignment(JTextField.LEFT);break;

                                                    case 2:  t1.setText(""+(x*y)); t1.setHorizontalAlignment(JTextField.LEFT);break;

                                                     case 3: t1.setText(""+(x/y));  t1.setHorizontalAlignment(JTextField.LEFT);break;

                                                         }

                                                 }

                                          else if(e.getSource()==b[11]) {             //单击"."按钮输入小数

                                                if(t1.getText().trim().indexOf('.')!=-1){               //判断字符串是否已经包含了小数点

                                                     }

                                                else{    //如果没有小数点

                                                       if(t1.getText().trim().equals("0"){      //如果初始显示为0

                                                                                       t1.setText(str.append(e.getActionCommand()).toString());

                                                                                       t1.setHorizontalAlignment(JTextField.LEFT);

                                                      }else if(t1.geText().trim().equals("")){             //如果初始显示为空则不做任何操作

                                                                       }

                                                           else{

                                                                    t1.setText(str.append(e.getActionCommand()).toString());

                                                                    t1.setHorizontalAlignment(JTextField.LEFT);

                                                                    }

                                                               }

                                                            y=0d;

                                                 }

                                                else if(e.getSource()==b6){               //求平方根

                                                                 x=Double.parseDouble(t1.getText().trim());

                                                                if(x<0){

                                                                         t1.setText("数字格式异常");

                                                                         t1.setHorizontalAlignment(JTextField.LEFT);

                                                                               }

                                                                    else{

                                                                                 t1.setText(""+Math.sqrt(x));

                                                                                 t1.setHorizontalAlignment(JTextField.LEFT);

                                                                                   }

                                                                           str.setLength(0);

                                                                              y=0d;

                                                                              }

                                                                   else{

                                                                              if(e.getSource()==b[0]){              //如果选择是“0”这个数字键

                                                                                               if(t1.getText().trim().equals("0");{  

                                                                                                           }//如果显示屏显示的是0,则不做操作

                                                                                                    else

                                                                                                            t1.setText(str.append(e.getActionCommand()).toString());

                                                                                                             t1.setHorizontalAlignment(JTextField.LEFT);

                                                                                                              y=Double.parseDouble(t1.getText().trim());

                                                                                                      }

                                                                             else if(e.getSource()==b2){              //返回的是back键

                                                                                            if(!t1.getText().trim().equals("0")){      //如果显示屏显示的不是0

                                                                                                  

            if(str.length()!=1
            
              t1.setText(str.delete(str.length()-1,str.length()).toString());//可能抛出字符串越界异常 
              t1.setHorizontalAlignment(JTextField.RIGHT);
            }
            else 
            
              t1.setText("0"); t1.setHorizontalAlignment(JTextField.RIGHT);
              str.setLength(0); 
            
          
          y=Double.parseDouble(t1.getText().trim()); 
          }
          else 
            {
            t1.setText(str.append(e.getActionCommand()).toString()); 
            t1.setHorizontalAlignment(JTextField.RIGHT);
            y=Double.parseDouble(t1.getText().trim());
            }
          }
        }
        catch(NumberFormatException e1){ t1.setText("数字格式异常");
        t1.setHorizontalAlignment(JTextField.RIGHT); } 
      
        catch(StringIndexOutOfBoundsException e1){t1.setText("字符串索引越界");
        t1.setHorizontalAlignment(JTextField.RIGHT);} 
      }
    }

                                                                                                                

                                              

                           

                  

     

                                                                                

                                                                    

                                                         

            

                             

                      

  • 相关阅读:
    公司初创期使用 PHP,为什么很多公司都会慢慢转型到 JAVA
    Firefox 如何对发送的参数进行调试
    Spring security CSRF 跨域访问限制问题
    IntelliJ IDEA 的 Maven 如何设置自动下载源代码和文档
    Spring 的 WebSecurityConfigurerAdapter 过滤器
    Java NIO Path 接口
    Joda-Time – 可用的时区列表
    JWT 如何解码和获得令牌失效的日期
    MySQL索引相关操作
    详细了解INNODB_TRX、INNODB_LOCKs、INNODB_LOCK_waits、PROCESSLIST表
  • 原文地址:https://www.cnblogs.com/zhouzetian/p/7527832.html
Copyright © 2011-2022 走看看