我是初学者,求一个JAVA计算器代码

解决方案 »

  1.   

    import java.awt.*;
    import java.awt.event.*;
    public class Caculator{
    public static void main(String[] args){
    new CFrame("Made By OuZhiLi");
    }
    }class CFrame extends Frame{
    Button b0,b1,b2,b3,b4,b5,b6,b7,b8,b9,bdiv,bmul,bsub,badd,bpot,bequals,bcancel;
    TextField tf;
    //当点击按钮+、-、*、/时,com = true 
    boolean com = false;  //当i=0时说明是我们第一次输入,字符串text不会累加 
    int i = 0;  //存放text的内容 
    String text = "";  //存放点击按钮+、-、*、/之前的数值 
    double defbutton = 0;  //+、-、*、/的代号分别为1,2,3,4 
    int symbol = 0; 

    //a用来标记0
    int a;

    public CFrame (String s){
    super(s);
    setLayout(new BorderLayout()); 
    setLocation(350,250);
        setSize(250,300);
        
         tf= new TextField("0",300);
         b0=new Button("0");
         b1=new Button("1");
         b2=new Button("2");
         b3=new Button("3");
         b4=new Button("4");
         b5=new Button("5");
         b6=new Button("6");
         b7=new Button("7");
         b8=new Button("8");
         b9=new Button("9");
         bdiv=new Button("/");
         bmul=new Button("*");
         bsub=new Button("-");
         badd=new Button("+");
         bpot=new Button(".");
         bequals=new Button("=");
         bcancel=new Button("清零");
        
        b0.addActionListener(new MyMonitor());
        b1.addActionListener(new MyMonitor());
        b2.addActionListener(new MyMonitor());
        b3.addActionListener(new MyMonitor());
        b4.addActionListener(new MyMonitor());
        b5.addActionListener(new MyMonitor());
        b6.addActionListener(new MyMonitor());
        b7.addActionListener(new MyMonitor());
        b8.addActionListener(new MyMonitor());
        b9.addActionListener(new MyMonitor());
        bdiv.addActionListener(new MyMonitor());
        bmul.addActionListener(new MyMonitor());
        bsub.addActionListener(new MyMonitor());
        badd.addActionListener(new MyMonitor());
        bequals.addActionListener(new MyMonitor());
        bpot.addActionListener(new MyMonitor());
        bcancel.addActionListener(new MyMonitor());
        
        Panel p1 = new Panel(new BorderLayout());
        Panel p2=new Panel(new GridLayout(4,4));
        Panel p3=new Panel(new BorderLayout());
        p1.add(tf);
        p2.add(b7); p2.add(b8);p2.add(b9);p2.add(bdiv);
        p2.add(b4); p2.add(b5);p2.add(b6);p2.add(bmul);
        p2.add(b1); p2.add(b2);p2.add(b3);p2.add(bsub);
        p2.add(b0); p2.add(bpot);p2.add(bequals);p2.add(badd);
        p3.add(bcancel);
        add(p1,"North");add(p2,"Center");add(p3,"South");
        addWindowListener(new WindowAdapter(){ 
         public void windowClosing(WindowEvent e){ 
         System.exit(0); 
         } 
         }); 
        setVisible(true);
    }
      

  2.   

    private class MyMonitor implements ActionListener{
    public void actionPerformed(ActionEvent e) {
    /*如果是点击数字按钮那么先要判断是否在此之前点击了+、-、*、/、=,如果是那么com=true 
    * 如果没有com= false;或者是否点击数字键,如果是i = 1,如果没有 i = 0; 
    **/ 
    if (e.getSource() == b1) { 
    if (com || i == 0) { 
    tf.setText("1"); 
    com = false; 
    i = 1; 
    } else { 
    text = tf.getText(); 
    if(text.indexOf(".") == -1&&(a=(int)Double.parseDouble(text))==0){
    tf.setText("1");
    }
    else{
    tf.setText(text + "1"); 
    }


    else if (e.getSource() == b2) { 
    if (com || i == 0) { 
    tf.setText("2"); 
    com = false; 
    i = 1; 
    } else { 
    text =tf.getText(); 
    if(text.indexOf(".") == -1&&(a=(int)Double.parseDouble(text))==0){
    tf.setText("2");
    }
    else{
    tf.setText(text + "2"); 
    }

    }
    else if (e.getSource() == b3) { 
    if (com || i == 0) { 
    tf.setText("3"); 
    com = false; 
    i = 1; 
    } else { 
    text =tf.getText(); 
    if(text.indexOf(".") == -1&&(a=(int)Double.parseDouble(text))==0){
    tf.setText("3");
    }
    else{
    tf.setText(text + "3"); 
    }

         }
    else if (e.getSource() == b4) { 
    if (com || i == 0) { 
    tf.setText("4"); 
    com = false; 
    i = 1; 
    } else { 
    text =tf.getText(); 
    if(text.indexOf(".") == -1&&(a=(int)Double.parseDouble(text))==0){
    tf.setText("4");
    }
    else{
    tf.setText(text + "4"); 


         }
    else if (e.getSource() == b5) { 
    if (com || i == 0) { 
    tf.setText("5"); 
    com = false; 
    i = 1; 
    } else { 
    text =tf.getText(); 
    if(text.indexOf(".") == -1&&(a=(int)Double.parseDouble(text))==0){
    tf.setText("5");
    }
    else{
    tf.setText(text + "5"); 


    }
    else if (e.getSource() == b6) { 
    if (com || i == 0) { 
    tf.setText("6"); 
    com = false; 
    i = 1; 
    } else { 
    text =tf.getText(); 
    if(text.indexOf(".") == -1&&(a=(int)Double.parseDouble(text))==0){
    tf.setText("6");
    }
    else{
    tf.setText(text + "6"); 


         }
    else if (e.getSource() == b7) { 
    if (com || i == 0) { 
    tf.setText("7"); 
    com = false; 
    i = 1; 
    } else { 
    text =tf.getText(); 
    if(text.indexOf(".") == -1&&(a=(int)Double.parseDouble(text))==0){
    tf.setText("7");
    }
    else{
    tf.setText(text + "7"); 


         }
    else if (e.getSource() == b8) { 
    if (com || i == 0) { 
    tf.setText("8"); 
    com = false; 
    i = 1; 
    } else { 
    text =tf.getText(); 
    if(text.indexOf(".") == -1&&(a=(int)Double.parseDouble(text))==0){
    tf.setText("8");
    }
    else{
    tf.setText(text + "8"); 
    }

         }
       else if (e.getSource() == b9) { 
    if (com || i == 0) { 
    tf.setText("9"); 
    com = false; 
    i = 1; 
    } else { 
    text =tf.getText(); 
    if(text.indexOf(".") == -1&&(a=(int)Double.parseDouble(text))==0){
    tf.setText("9");
    }
    else{
    tf.setText(text + "9"); 
    }

         } /*对于0这个按钮有一定的说法,在我的程序里不会出现如00000这样的情况,我加了判断条件就是 
    * 如果text中的数值=0就要判断在这个数值中是否有.存在?如果有那么就在原来数值基础之上添 
    * 加0;否则保持原来的数值不变 
    */ 
    else if (e.getSource() == b0) { //result.text.getText()是得到text里内容的意思 
    if (com || i == 0) { 
    tf.setText("0"); 
    com = false; 
    i = 1; 
    } else { 
    text = tf.getText(); 
    if (Double.parseDouble(text) > 0 || Double.parseDouble(text) < 0) { //Double.parseFloat(text)就是类型转换了,下面都是一样 
    tf.setText(text + "0"); 
    } else { 
    if (text.trim().indexOf(".") == -1) { 
    tf.setText(text); 
    } else { 
    tf.setText(text + "0"); 


        } 
    }
    else if(e.getSource()==bcancel){
    tf.setText("0");
    }
    /*本程序不会让一个数值中出现2个以上的小数点.具体做法是:判断是否已经存在.存在就不添加, 
    * 不存在就添加. 
    */ 
    else if (e.getSource() == bpot) { 
    if (com || i == 0) { 
    tf.setText("0."); 
    com = false; 
    i = 1; 
    } else { 
    text = tf.getText(); 
    if (text.trim().indexOf(".") == -1) { 
    tf.setText(text + "."); 
    } else { 
    tf.setText(text); 


            }
    //获得点击+之前的数值 
    else if (e.getSource() == badd) { 
    com = true; 
    i = 0; 
    defbutton = Double.parseDouble(tf.getText()); 
    symbol = 1; 
    } //获得点击-之前的数值 
    else if (e.getSource() == bsub) { 
    com = true; 
    i = 0; 
    defbutton = Double.parseDouble(tf.getText()); 
    symbol = 2; 
    } //获得点击*之前的数值 
    else if (e.getSource() == bmul) { 
    com = true; 
    i = 0; 
    defbutton = Double.parseDouble(tf.getText()); 
    symbol = 3; 
    } //获得点击/之前的数值 
    else if (e.getSource() == bdiv) { 
    com = true; 
    i = 0; 
    defbutton = Double.parseDouble(tf.getText()); 
    symbol = 4; 
    }
    else if (e.getSource() == bequals) { 
                    switch (symbol) { 
    case 1 : //计算加法 

    double result  = 
    defbutton + Double.parseDouble(tf.getText()); 
    tf.setText(result  + ""); 
    i = 0; 
    text = ""; 
    break; 

    case 2 ://计算减法 

    double result  = 
    defbutton - Double.parseDouble(tf.getText()); 
    tf.setText(String.valueOf(result )); 
    i = 0; 
    text = ""; 
    break; 

    case 3 ://计算乘法 

    double result  = 
    defbutton * Double.parseDouble(tf.getText());  tf.setText(result  + ""); 
    i = 0; 
    text = ""; 
    break; 

    case 4 ://计算除法 

    double result = 
    defbutton / Double.parseDouble(tf.getText()); 
    tf.setText(result  + ""); 
    i = 0; 
    text = ""; 
    break; 


            }
    //over
    }
    }
    }