/*
 * 事件处理方法(每次点击一个按钮,触发一个事件,就进入一次这个方法)
 */
public  void  actionPerformed(ActionEvent ae){
String s=ae.getActionCommand();
    
}
我的思路:其中设了几个属性:StringBuilder s1 = null;//放加号前面的值
                         StringBuilder s2 = null;//放加号
                         StringBuilder s3 = null;//放加好后面的值          //判断是不是=
 //是:
      //判断s1,s2,s3是否有一个为空
      //是:输出错误
      //不是:求和运算
 //不是:
      //判断s是不是数字
      //1)是数字
          //1 判断s2是否为空
          //是:追加到s1
          //不是:追加到s3
      //2)不是数字
           //判断是否是符号
           //是:判断s1 是否为空
                 //是:输出有错!
                 //不是:判断s3是否是空
                       //是:追加到s2
                       //不是:输出有错!!
           //不是:错误提示!
    我自己编的:public  void  actionPerformed(ActionEvent ae){
 String s=ae.getActionCommand();
     
 String ss1 = "^[0-9]+$";
 String ss2 = "^[+-*/]{1}$";
 if(s.matches("^[=]{1}$")){
 if(s1==null||s2==null||s3==null){
 System.out.println("err!");
 }else{
  System.out.println(Integer.parseInt(s1.toString())+
                              s2.charAt(0)+
             Integer.parseInt(s3.toString()));                               
 }
 }else{
 if(s.matches(ss1)){
  if(s2==null){
  s1.append(s);
  System.out.println(s1.toString());
  }else{
  s3.append(s);
  System.out.println(s3.toString());
  }
 }else{
  if(s.matches(ss2)){
  if(s1==null){
  System.out.println("err!");
  }else{
  if(s3==null){
  s2.append(s);
  System.out.println(s2.toString().charAt(0));
  }else{
 System.out.println("err!"); 
  }
  }
  }else{
 System.out.println("err!");  
  }
 }
 }

} 找不到错处,是思路有问题,还是程序?或者都是?那该怎么做?请大家多多指教!

解决方案 »

  1.   

    import javax.swing.JTextField;
    import javax.swing.JFrame;
    import javax.swing.JPanel;
    import java.awt.GridLayout;
    import java.awt.BorderLayout;
    import javax.swing.JButton;import java.awt.event.ActionEvent;
    import java.awt.event.ActionListener;public class Computer implements ActionListener { private JTextField jtf = new JTextField("", 20);
        
    public Computer() { init();
    } /**
     * 初始化JFrame的方法
     */
    private void init() {
    JFrame jf = new JFrame("计算器");
    JPanel jp = new JPanel(); //计算器的按钮面板
    //给jf设置布局管理器,并设置它的布局
    jf.setLayout(new BorderLayout());
    jtf.setEditable(false); //设置文本框的内容部可以写入。
    jf.add(jtf, BorderLayout.NORTH);
    jf.add(jp, BorderLayout.CENTER);

    //调用初始化按钮的方法。
    initJPanel(jp);

    //设置jf的显示位置
    jf.setLocation(500, 300);

    //设置jf的大小,pack()让其自己调整,可以调节。
    jf.pack();
    jf.setResizable(false); //使其的大小不可调整。

    //设置jf的可见性,一定要放到setSize()的后面
    jf.setVisible(true);

    //设置窗体的关闭方式
    jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } /**
     * 初始化JPanel的方法,完成按钮的创建。
     */
    public void initJPanel(JPanel jp) {
    //给jp设置布置管理器(网格布局管理器)
    jp.setLayout(new GridLayout(5, 4, 2, 2));
    //按钮的名字
    String[] names = { "Back", "CE", "C", "+", "7", "8", "9", "-", "4",
    "5", "6", "*", "1", "2", "3", "/", "0", "+/-", ".", "=" };
    JButton[] jbs = new JButton[names.length];
    for (int i = 0; i < names.length; i++) {
    jbs[i] = new JButton(names[i]);
    //给按钮添加事件
    jbs[i].addActionListener(this);  
    //把按钮添加到jp上
    jp.add(jbs[i]);
    } } /**
     * 事件处理方法(每次点击一个按钮,触发一个事件,就进入一次这个方法)
     */
    public  void  actionPerformed(ActionEvent ae){
    String s=ae.getActionCommand();
        
    }




    public static void main(String[] args) {  new Computer();
    } }
      

  2.   

    你可以去网上找几个别人作的计算器代码看看
    比如去CSDN下载频道搜索下 好多呢 而且还有注释