计算器

package yz;
//引入类
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
import java.math.BigDecimal;
public class Yz extends JFrame implements ActionListener {
    JPanel jsq;
    JTextField txt;
    JButton[] Nums;
    int f=  0;
    Double g=0.0,h=0.0,j=0.0;
    String fh="";
    public static void main(String[] args) {
        Yz y=new Yz();
    }
    public Yz(){
        jsq=new JPanel();
        jsq.setLayout(new GridLayout(  5,  4,  4,  4));
        Nums=new JButton[ 20];
        String []a={"←","CE","C","%",
                "7","8","9","/",
                "4","5","6","*",
                "1","2","3","-",
                ".","0","=","+"};
        for(int i=  0;i<Nums.length;i++){
            Nums[i]=new JButton(a[i]);
            jsq.add(Nums[i]);
            Nums[i].addActionListener(this);//注册监听
        }   
        txt=new JTextField( 10);
        txt.setText("");
        txt.setEditable(false);
        txt.setRequestFocusEnabled(false);
        txt.setHorizontalAlignment(JTextField.RIGHT);
        this.add(txt,BorderLayout.NORTH);
        this.add(jsq);
        this.setVisible(true);     //显示窗体
        this.setSize(300,300);     //窗体大小
        this.setLocation(550,300); //出现位置
        this.setTitle("计算器");         //窗体标题
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭进程
    }
    //监听
    public void actionPerformed(ActionEvent e){
        String a=e.getActionCommand();
        int b="0123456789".indexOf(a);
        int c="+-*/%".indexOf(a);
        if(b!=-  1){//如果按下的是数字
            if(f==  0){
                txt.setText(a);
                f=  1;
            }
            else
            {
                String d = txt.getText();
                txt.setText(d+a);
            }
        }
        else if(c!=-  1)//如果按下的是运算符
        {
              
  
             if(c==  1&&f==  0){
                 g=0.0;
                 txt.setText(a);
                 f=  1;
             }
             else if(txt.getText().equals("")){
                 JOptionPane.showMessageDialog(null"错误""不能为零请重新输入", JOptionPane.ERROR_MESSAGE);
             }
             else  {
             g=Double.valueOf(txt.getText());
             fh=a;
             txt.setText("");
            f=  0;
             }
              
        }
        else if("="==a){//如果按下的是等号
          
             if(txt.getText().equals("")){
                 h=0.0;
             }
             else
                 h=Double.valueOf(txt.getText());
             if(fh=="+"){//如果按下的是加号
                String d1 = String.valueOf(g+h).substring(  0, String.valueOf(g+h).length());
                double i;
                i=Double.valueOf(d1);
                int r=(int)i;
                if(r==Double.valueOf(d1)){
                    d1=d1.substring(  0, d1.length()-  2);
                    txt.setText(d1);
                 }
                else
                    txt.setText(d1);
              
             }
             if(fh=="-"){//如果按下的是减号
                   String d2 = String.valueOf(g-h).substring(  0, String.valueOf(g-h).length());
                    double i;
                    i=Double.valueOf(d2);
                    if(i>=  0)
                    {
                        float r=(float)i;
                         if(r==Double.valueOf(d2)){
                         d2=d2.substring(  0, d2.length()-  2);
                         txt.setText(d2);
                          
                         }
                         else{
                         txt.setText(d2);
                         }
                    }
                    else{
                          
                        txt.setText(new BigDecimal(String.valueOf(g-h).substring(  0, String.valueOf(g-h).length())).stripTrailingZeros().toString());
                          
                        }
                 }
             if(fh=="*"){//如果按下的是乘号
                    String d3 = String.valueOf(g*h).substring(  0, String.valueOf(g*h).length());
                    double i;
                    i=Double.valueOf(d3);
                    int r=(int)i;
                    if(r==i){
                        d3=d3.substring(  0, d3.length()-  2);
                        txt.setText(d3);
                      
                     }
                    else{
                        txt.setText(d3);  
                      
                    }
                 }
             if(fh=="/"){//如果按下的是除号
                 if(h==0.0){
                     JOptionPane.showMessageDialog(null"错误""除数不能为零请重新输入", JOptionPane.ERROR_MESSAGE);
                     txt.setText("");
                 }
                 else{
                       String d4 = String.valueOf(g/h).substring(  0, String.valueOf(g/h).length());
                        double i;
                        i=Double.valueOf(d4);
                        int r=(int)i;
                        if(r==Double.valueOf(d4)){
                            d4=d4.substring(  0, d4.length()-  2);
                            txt.setText(d4);
                              
                         }
                        else{
                            txt.setText(d4);
                              
                        }
                 
             }
             if(fh=="%"){
                 String n = txt.getText();
                 txt.setText(String.valueOf(g/100));
                 }
        }
        else if("CE"==a){
            h=0.0;
            txt.setText("");
        
        else if("C"==a){
            g=0.0;
            h=0.0;
            f=  0;
            txt.setText("");
        
        else if("."==a){
             String n = txt.getText();
             if(txt.getText().trim().indexOf(".")!=-  1) ;
             else
             txt.setText(n+".");
        }
        else if("←"==a){
            String xs=txt.getText();
            if(xs.length()>=  1)
                xs=xs.substring(  0, xs.length()-  1);
            txt.setText(xs);
        }
    }
}

 

上一篇:iOS源码之OC相册,可以循环查看图片


下一篇:OC推箱子