程序如下:
import java.util.*;
import java.awt.*; 
import java.awt.event.*; 
class Calculator extends Frame implements ActionListener { 
   private boolean operated, equaled; // 帮助运算的布尔变量 
   private double storedNumber; // 目前的结果 
   private char lastOperator; // 表示上一运算符
   private Panel pan; 
   private TextField operation; //计算结果显示栏 
   private Button plus, minus,multi,div,equal,clear; // 运算符 
   private Button[] numbers;
//构造方法 
   public Calculator(){ 
   
// 初始化变量 
   operated = false; // 表示任意运算符是否被按下 
   equaled = false; // 表示等号是否被按下 
   storedNumber = 0; 
   lastOperator = '?'; 
   
// 初始化窗口变量
   setLayout(null);
   setTitle("Calculator");  
   
   operation = new TextField("0");
   operation.setBounds(20,40,200,20); 
   operation.setEditable(false); 
   numbers = new Button[10]; 
   for (int i = 0; i < 10; i++) 
      numbers[i] = new Button("" + i); 
   plus = new Button("+"); 
   minus = new Button("-"); 
   multi = new Button("*"); 
   div = new Button("/"); 
   equal = new Button("="); 
   clear = new Button("AC");
   pan= new Panel(); 
   
// 将物体放入窗口 
   add(operation); 
   pan.setLayout(new GridLayout(4,4));
   pan.setBounds(20,80,200,100);
   add(pan);
   for (int i=7;i<10;++i)
    pan.add(numbers[i]);
   pan.add(plus);
   for (int i=4;i<7;++i)
 pan.add(numbers[i]);
   pan.add(minus);
   for (int i=1;i<4;++i)
 pan.add(numbers[i]);
   pan.add(multi);
   pan.add(numbers[0]);
   pan.add(clear);
   pan.add(equal);
   pan.add(div);

// 对按钮进行反应的方法 
public void actionPerformed(ActionEvent e){ 
   Button btn = (Button)e.getSource(); 
   if(btn == clear){ 
      operation.setText("0"); 
      storedNumber = 0; 
      lastOperator = '?'; 
   } 
   else if (btn == equal){ 
      operate('='); 
      equaled = true; 
   } 
   else if (btn == plus){ 
      operate('+'); 
      equaled = false; 
   } 
   else if (btn == minus){ 
      operate('-'); 
      equaled = false; 
   } 
   else if (btn == multi){ 
      operate('*'); 
      equaled = false; 
   } 
   else if (btn == div){ 
      operate('/'); 
      equaled = false; 
   } 
   else{ 
       if (equaled) 
          storedNumber = 0; 
       for (int i = 0; i < 10; i++) 
          if (btn == numbers[i]){ 
              if (operation.getText().equals("0")) 
                  operation.setText("" + i); 
              else if(!operated) 
                  operation.setText(operation.getText() + i); 
              else{ 
                  operation.setText("" + i); 
                  operated = false; 
              } 
          }    } 

// 进行运算的方法 
private void operate(char operator){ 
    double currentNumber = Double.valueOf(operation.getText()).doubleValue(); 
    if (lastOperator == '?') 
        storedNumber = currentNumber; 
    else if (lastOperator == '+') 
        storedNumber += currentNumber; 
    else if (lastOperator == '-') 
        storedNumber -= currentNumber; 
    else if (lastOperator == '*') 
        storedNumber *= currentNumber; 
    else if (lastOperator == '/') 
        storedNumber /= currentNumber; 
    else if (lastOperator == 'p') 
        storedNumber *= -1; 
    else if (lastOperator == 's') 
        storedNumber = Math.sqrt(currentNumber); 
    else if (lastOperator == '=' && equaled) 
        storedNumber = currentNumber; 
    operation.setText("" + storedNumber); 
    operated = true; 
    lastOperator = operator; 

public static void main(String[] args){ // 主方法初始化并显示窗口  
Calculator calculator = new Calculator();
calculator.setSize(250,200); 
calculator.setVisible(true);