下面是我写的一段简单计算器的代码,可是我不知道“=”的相关代码怎么写,来帮帮忙啊/******************
**Calculator.java**
******************/
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;public class Calculator extends WindowAdapter implements ActionListener {
    private JFrame frame;
    private JPanel panel1,panel2;
    private JTextField tf;
    private JButton[] bt;
    private static String number,judge,sign;
    private static Double num,result;
    
    public void work(){
     frame = new JFrame("Normal Calculator");
     panel1 = new JPanel();
     panel2 = new JPanel();
     panel2.setLayout(new GridLayout(4,4));
     tf = new JTextField("0.0",15);
     bt = new JButton[16];
     String[] stringarray = {"0","1","2","3","4","5","6","7","8","9","+","-","*","/",".","="};
     for(int i = 0;i<=15;i++) {
     bt[i] = new JButton(stringarray[i]);
     bt[i].setActionCommand(stringarray[i]);
     bt[i].addActionListener(this);
     }    
     number = "";
     judge = "";
     sign = "";
     num = 0.0;
     result = 0.0;
    
     panel1.add(tf);
     int[] orderarray ={7,8,9,10,4,5,6,11,1,2,3,12,0,14,15,13};
     for(int i = 0;i <= 15;i++)
     panel2.add(bt[orderarray[i]]);             
     frame.add(panel1,BorderLayout.NORTH);
     frame.add(panel2,BorderLayout.CENTER);         
    
     frame.addWindowListener(this);   
     frame.setSize(300,250);
     frame.setVisible(true);
    }
    
    public void actionPerformed(ActionEvent e) {
     if("1234567890.".contains(e.getActionCommand())) {    
       number += e.getActionCommand();
           tf.setText(number);
     } 
        else {
           if("+-*/".contains(e.getActionCommand())) {        
               workOut();
               sign = e.getActionCommand();                              
           }
           else    workOut();            
        }          
    }
    
    public void getNumber() {
     if(number != "") {
         if(judge == "") {
         result = Double.parseDouble(number);
             judge = number;
         number = "";
         }
         else {
         num = Double.parseDouble(number);      
         number = "";
         }    
        }
    }
    
    public void workOut() {
     getNumber();
        
        if(sign.equals("+"))        
         result += num;                  
        if(sign.equals("-"))
            result -= num;                          
        if(sign.equals("*"))
         result *= num;                
        tf.setText(Double.toString(result));             
        if(sign.equals("/")) {
            if(num != 0) {
                result /= num; 
                tf.setText(Double.toString(result));                                
            }                 
            else    tf.setText("error");              
        }         
    }
    
    public void windowClosing(WindowEvent e) {
     System.exit(0);
    } 
         
    public static void main(String[] args) {
     Calculator calculator = new Calculator();
     calculator.work();
    }  
}

解决方案 »

  1.   

    你先定义一个变量sig 当点了+ - * /这些符号的时候,把屏幕的数字存储在一个变量a中,并把符号存在变量sig中,当点=号时候首先判断sign是什么,比如是+  就把a和屏幕上的数据相加
      

  2.   

    我自己也做了个~基本实现了 一些功能~我是通过连表实现的~
    建议你用连表~ LinkedList
      

  3.   

    晕啊        先把所有功能模块化      然后你想要在哪实现就在哪调用方法咯!~
    自己多思考思考,你这样的问题我也不知道该怎么回答,给你个思路好了,不过只是简单思路
    定义两个数a和b
     定义结果x
    定义符号f
    定义方法




    并实现其功能
    监听button,当
    +  -  *  /
    键被击时候
    {
     查看f是否为空,如果不是
     {
    计算结果
    把结果赋给a
    把屏幕赋给b
    }
     把屏幕赋给a
     把响应符号赋给f
    }
    这就是你要 的功能
    当= 被点时
    看符号是否为空,是则x=0
    不是则计算结果
      

  4.   

    我的这个实现了WINDOWS自带的计算器的普通型的所有功能,不过我的数字处理全都是用的DOUBLE型的。由于科学型中的很多按钮的功能我不知道,所以没写。想把代码贴出来的,可是超过了限制长度,我把它放到下载里,想看的就看看吧,我已经做了可执行文件,一起放那里了,只要装了JAVA就能直接运行。