我急需一个计算器的java源程序,请各位大虾帮忙啊!
我的邮箱是yahui1314521@163.com
我急需一个计算器的java源程序,请各位大虾帮忙啊!
我的邮箱是yahui1314521@163.com
代码全部自己手写的,就连String-〉double也是自己写的程序,当时自己还不知道有Double.parseDouble()这个函数,汗……,就是这个用awt实现的,刚学了两天自己就在写这个程序,不要笑话偶…… 现在自己学了半个月java了也算是……
package calculator;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Calculator extends JFrame {
  int mark=0;//作为前一个运算符号的标记10->'+';11->'-';12->'*',13->'/'
  int select=0;
  double item1;
  double item2;
  double  item=0;
  String str;
  String str1;
  Frame fr=new Frame("简易计算器模型");
  TextField tf=new TextField(10);
  Panel p1=new Panel();
  Panel p2=new Panel();//Carry the bottons
  Panel p3=new Panel();
  Panel p4=new Panel();
  Panel p5=new Panel();
  Panel p6=new Panel();
  Button b0=new Button("0");
  Button b1=new Button("1");
  Button b2=new Button("2");
  Button b3=new Button("3");
  Button b4=new Button("4");
  Button b5=new Button("5");
  Button b6=new Button("6");
  Button b7=new Button("7");
  Button b8=new Button("8");
  Button b9=new Button("9");
  Button b10=new Button("+");
  Button b11=new Button("-");
  Button b12=new Button("*");
  Button b13=new Button("/");
  Button b14=new Button(".");
  Button b15=new Button("=");
  public static  void  main(String [] args){
    Calculator t=new Calculator();
    t.go();
  }
  void go(){
    fr.setBackground(Color.DARK_GRAY);
    fr.setLayout(new FlowLayout());
    fr.addWindowListener(new WindowHandler());
    b0.addActionListener(new ButtonHandler(0));
    b1.addActionListener(new ButtonHandler(1));
    b2.addActionListener(new ButtonHandler(2));
    b3.addActionListener(new ButtonHandler(3));
    b4.addActionListener(new ButtonHandler(4));
    b5.addActionListener(new ButtonHandler(5));
    b6.addActionListener(new ButtonHandler(6));
    b7.addActionListener(new ButtonHandler(7));
    b8.addActionListener(new ButtonHandler(8));
    b9.addActionListener(new ButtonHandler(9));
    b10.addActionListener(new ButtonHandler(10));
    b11.addActionListener(new ButtonHandler(11));
    b12.addActionListener(new ButtonHandler(12));
    b13.addActionListener(new ButtonHandler(13));
    b14.addActionListener(new ButtonHandler(14));
    b15.addActionListener(new ButtonHandler(15));
    p1.setLayout(new FlowLayout());
    p2.setLayout(new GridLayout(1,4,5,0));
    p3.setLayout(new GridLayout(4,1,0,5));
    p4.setLayout(new GridLayout(4,1,0,5));
    p5.setLayout(new GridLayout(4,1,0,5));
    p6.setLayout(new GridLayout(4,1,0,5));
    p2.add(p3);
    p2.add(p4);
    p2.add(p5);
    p2.add(p6);
    p3.add(b1);
    p3.add(b4);
    p3.add(b7);
    p3.add(b15);
    p4.add(b2);
    p4.add(b5);
    p4.add(b8);
    p4.add(b14);
    p5.add(b3);
    p5.add(b6);
    p5.add(b9);
    p5.add(b0);
    p6.add(b10);
    p6.add(b11);
    p6.add(b12);
    p6.add(b13);
    p1.add(tf);
    fr.add(p1);
    fr.add(p2);
    fr.setSize(100,200);
    fr.setVisible(true);
  }
  double chang(String a){//change the String to the double;
         double  a1=0.0;
         int mark=0;
         int j=0;
    for(int i=0;i<a.length();i++)
     {
       if(a.charAt(i)=='-')
       {
         mark++;continue;
       }
         if (j == 0) {
           if (a.charAt(i) != '.')
             a1 = a1 * 10 + (a.charAt(i) - '0');
           else
             j++;
         }
         else {
           double cc = 1.0;
           for (int k = 0; k < j; k++)
             cc /= 10;
           a1 += cc * (a.charAt(i) - '0');
           j++;
         }
       //else {b1+=(10^j)*(b.charAt(i)-'0');j--;}
     }
     if(mark!=0)
           a1=0-a1;
           return  a1;
     }
  class WindowHandler extends WindowAdapter{
    public void  windowClosing(WindowEvent e){
      System.exit(1);
    }
  }
  class ButtonHandler implements ActionListener{
    int sel;
    ButtonHandler(int select){
      this.sel=select;
      }
      public void  actionPerformed(ActionEvent e){
        switch(sel){
          case 0:tf.setText(tf.getText()+"0");break;
          case 1:tf.setText(tf.getText()+"1");break;
          case 2:tf.setText(tf.getText()+"2");break;
          case 3:tf.setText(tf.getText()+"3");break;
          case 4:tf.setText(tf.getText()+"4");break;
          case 5:tf.setText(tf.getText()+"5");break;
          case 6:tf.setText(tf.getText()+"6");break;
          case 7:tf.setText(tf.getText()+"7");break;
          case 8:tf.setText(tf.getText()+"8");break;
          case 9:tf.setText(tf.getText()+"9");break;
          case 10:{
              str1=tf.getText();
              item1=chang(str1);
              tf.setText("");
              mark=10;
              break ;}
          case 11:
              {str1=tf.getText();
              item1=chang(str1);
              tf.setText("");
              mark=11;break;}
         case 12:
           {str1=tf.getText();
            item1=chang(str1);
            tf.setText("");
            mark=12;break;}
         case 13:
         {str1=tf.getText();
         item1=chang(str1);
         tf.setText("");
         mark=13;
         break ;}
        case 14:tf.setText(tf.getText()+".");break;
        case 15:if(mark==10/*'+'*/){
           str=tf.getText();
           item=chang(str);
           item1+=item;
           str=String.valueOf(item1);
           tf.setText(str);
         }
         if(mark==11/*'-'*/){
           str=tf.getText();
           item=chang(str);
           item1-=item;
           str=String.valueOf(item1);
           tf.setText(str);
         }
         if(mark==12/*'*'*/){
           str=tf.getText();
           item=chang(str);
           item1*=item;
           str=String.valueOf(item1);
           tf.setText(str);
         }
         if(mark==13/*'*'*/){
           str=tf.getText();
           item=chang(str);
           item1/=item;
           str=String.valueOf(item1);
           tf.setText(str);
}
        }
      }
}
}