简易计算器

来源:互联网 发布:linux find 大小写 编辑:程序博客网 时间:2024/04/29 03:47

import java.awt.*;
import java.awt.event.*;

public class calculator implements ActionListener,WindowListener {
 private Frame f;  //计算器窗口容器。
 private TextField result;  //文本框。
 private float Num1, Num2, NumR;  //Num1用于保存第一个值,Num2用于保存第二个值, NumR保存结果的值。
 private char sign;  //sign用于保存运算符号。
 
 public static void main(String args[]) {  //主函数main。
   calculator cal = new calculator();
   cal.go();
 }
 
 void go() {  //go()方法,用于启动计算器。
   f = new Frame();
   f.setLayout(new BorderLayout(5,5));
   result = new TextField("0", 20);
   result.setEditable(false);
   f.add(result, "North");
  
   Panel p = new Panel();
     p.setLayout(new GridLayout(4,4,5,5));
     p.add(mybutton("7"));
     p.add(mybutton("8"));
     p.add(mybutton("9"));
     p.add(mybutton("+"));
     p.add(mybutton("4"));
     p.add(mybutton("5"));
     p.add(mybutton("6"));
     p.add(mybutton("-"));
     p.add(mybutton("1"));
     p.add(mybutton("2"));
     p.add(mybutton("3"));
     p.add(mybutton("*"));
     p.add(mybutton("0"));
     p.add(mybutton("C"));
     p.add(mybutton("="));
     p.add(mybutton("/"));
  
   f.add(p, "Center");
   f.addWindowListener(this);  //给窗体加上一个关闭事件。
   f.setSize(180,220);
   f.setResizable(false);  //自由调节窗体大小为false。
   f.setVisible(true);
 }
  
 public Button mybutton(String s) {  //动态建立一个按钮和动态加入事件。
    Button TempButton=new Button(s);
    TempButton.addActionListener(this);  //加入行动事件。
    return TempButton;
  }
  
 public void actionPerformed(ActionEvent e) {
   String input = e.getActionCommand();
   String str = "0123456789";
   String op = "+-*/";
   
   if (str.indexOf(input) >= 0) {  //当单击的按钮是数字按钮时进行下面处理。(参考Java书P157)
     if (result.getText().equals("0"))  //如果显示值中已经是0,如果再次输入的是零,则不处理。
         result.setText(input);
       else {
         if (NumR == 0)  //判定留在文本框中的值不为运算结果值。
           result.setText(result.getText().trim() + input);
         else {
           NumR = 0;
           result.setText("" + input);
         }
       }
     }
     else if (op.indexOf(input) >= 0) {  //当单击的按钮是运算符按钮时进行下面处理。
     Num1 = Float.parseFloat(result.getText().trim());
     result.setText(""); 
     sign = op.charAt(op.indexOf(input));  //得到相应的运算符。
     //op.charAt(n)返回在op字符串中的第n个位置的值。
     //op.indexOf(input)返回字符input在op中出现的位置,位置值为整型,并且值从0开始。
   }
   else if (input.equals("=")) {  //当单击的按钮是是=号时,进行运算。
     Num2 = Float.parseFloat(result.getText().trim());
     switch (sign) { 
       case '+': {
         NumR = Num1 + Num2;
         result.setText("" + NumR);
         break;
       }
       case '-': {
         NumR = Num1 - Num2;
         result.setText("" + NumR);
         break;
       }
       case '*': {
         NumR = Num1 * Num2;
         result.setText("" + NumR);
         break;
       }
       case '/': {
         if (Num2 != 0) {  //当Num2不等于0的时候,才进行运算。
           NumR = Num1 / Num2;
           result.setText("" + NumR);
         }
         else
           result.setText("Error");
         break;
       }
       default:;
     }
   }
   else if (input.equals("C")) {  //当单击的按钮是C号时,初始化计算器。
     Num1 = 0;
     Num2 = 0;
     NumR = 0;
     sign = ' ';
     result.setText("0");
    }
 }
 public void windowClosing(WindowEvent e) { System.exit(-1); }
  public void windowIconified(WindowEvent e) {}
  public void windowDeiconified(WindowEvent e) {}
  public void windowClosed(WindowEvent e) {}
  public void windowOpened(WindowEvent e) {} 
  public void windowActivated(WindowEvent e) {}
  public void windowDeactivated(WindowEvent e) {}
}

原创粉丝点击