本人是个菜鸟初学者来的..自己写了个计算器..使用时其他没什么问题..就是连续按等号时无法像系统自带的计算器那样连续运算...也就是说如果按  27/3  第一次按等号会出现9,第二次按等号会出现3,第三次按等号后就又输出9了...求高人们解释下..以下是代码..import java.awt.BorderLayout;
import java.awt.Dimension;import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JButton;
import java.awt.*;
import javax.swing.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;/**
 * <p>Title: </p>
 *
 * <p>Description: </p>
 *
 * <p>Copyright: Copyright (c) 2009</p>
 *
 * <p>Company: </p>
 *
 * @author not attributable
 * @version 1.0
 */
public class FrmLayout extends JFrame {
    JPanel contentPane;
    BorderLayout borderLayout1 = new BorderLayout();
    JPanel pnlNorth = new JPanel();
    JPanel pnlCenter1 = new JPanel();
    JPanel pnlEast = new JPanel();
    JPanel pnlSouth = new JPanel();
    JPanel pnlWest = new JPanel();
    JTextField txt = new JTextField();
    GridLayout gridLayout1 = new GridLayout();
    JButton btn7 = new JButton();
    JButton btnC = new JButton();
    JButton btnEqu = new JButton();
    JButton btnDiv = new JButton();
    JButton btn0 = new JButton();
    JButton btnMul = new JButton();
    JButton btn3 = new JButton();
    JButton btn2 = new JButton();
    JButton btn1 = new JButton();
    JButton btnSub = new JButton();
    JButton btn6 = new JButton();
    JButton btn5 = new JButton();
    JButton btn4 = new JButton();
    JButton btnAdd = new JButton();
    JButton btn9 = new JButton();
    JButton btn8 = new JButton();
    //定义变量
    double n1;
    double n2;
    double result;
    double n3;
    char op;
    boolean flag=true;//代表重新输入数字
    boolean flag2=true; //代表是否有运算结果    JPanel pnlCenter = new JPanel();
    JPanel pnlCenter2 = new JPanel();
    FlowLayout flowLayout1 = new FlowLayout();
    JButton btnSqrt = new JButton();
    JButton btnchange = new JButton();
    JButton btnpoint = new JButton();
    JButton btnpencent = new JButton();
    JButton btnd = new JButton();
    JButton btnCE = new JButton();
    JButton btnback = new JButton();
    public FrmLayout() {
        try {
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            jbInit();
        } catch (Exception exception) {
            exception.printStackTrace();
        }
    }    /**
     * Component initialization.
     *
     * @throws java.lang.Exception
     */
    private void jbInit() throws Exception {
        contentPane = (JPanel) getContentPane();
        contentPane.setLayout(borderLayout1);
        this.setForeground(Color.black);
        setSize(new Dimension(369, 370));
        setTitle("计算器");        txt.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
        //禁用编辑
        txt.setEditable(false);
        txt.setText("");
        txt.setHorizontalAlignment(SwingConstants.RIGHT);
        txt.setBounds(new Rectangle(19, 27, 313, 38));        gridLayout1.setColumns(5);
        gridLayout1.setHgap(10);
        gridLayout1.setRows(4);
        gridLayout1.setVgap(10);        //3--监听器注册
        btn0.addActionListener(new FrmLayout_btn0_actionAdapter(this));
        btn0.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
        btn0.setText("0");
        btn1.setText("1");
        btn1.addActionListener(new FrmLayout_btn1_actionAdapter(this));
        btn1.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
        btn2.setText("2");
        btn2.addActionListener(new FrmLayout_btn2_actionAdapter(this));
        btn2.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
        btn3.setText("3");
        btn3.addActionListener(new FrmLayout_btn3_actionAdapter(this));
        btn3.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
        btn4.setText("4");
        btn4.addActionListener(new FrmLayout_btn4_actionAdapter(this));
        btn4.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
        btn5.setText("5");
        btn5.addActionListener(new FrmLayout_btn5_actionAdapter(this));
        btn5.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
        btn6.setText("6");
        btn6.addActionListener(new FrmLayout_btn6_actionAdapter(this));
        btn6.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
        btn7.setText("7");
        btn7.addActionListener(new FrmLayout_btn7_actionAdapter(this));
        btn8.setText("8");
        btn8.addActionListener(new FrmLayout_btn8_actionAdapter(this));
        btn8.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
        btn9.setText("9");
        btn9.addActionListener(new FrmLayout_btn9_actionAdapter(this));
        btn9.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
        btnAdd.setText("+");
        btnAdd.addActionListener(new FrmLayout_btnAdd_actionAdapter(this));
        btnAdd.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
        btnSub.setText("-");
        btnSub.addActionListener(new FrmLayout_btnSub_actionAdapter(this));
        btnSub.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
        btnMul.setText("*");
        btnMul.addActionListener(new FrmLayout_btnMul_actionAdapter(this));
        btnMul.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
        btnDiv.setText("/");
        btnDiv.addActionListener(new FrmLayout_btnDiv_actionAdapter(this));
        btnDiv.setFont(new java.awt.Font("Dialog", Font.BOLD, 14));
        btnC.setText("C");
        btnC.addActionListener(new FrmLayout_btnC_actionAdapter(this));
        btnC.setFont(new java.awt.Font("Dialog", Font.BOLD | Font.ITALIC, 14));
        btnC.setForeground(Color.red);
        btnC.setMaximumSize(new Dimension(71, 25));
        btnC.setMinimumSize(new Dimension(71, 25));
        btnC.setPreferredSize(new Dimension(90, 25));
        btnEqu.setText("=");
        btnEqu.addActionListener(new FrmLayout_btnEqu_actionAdapter(this));
        pnlCenter.setLayout(null);
        pnlCenter2.setBounds(new Rectangle(14, 19, 314, 33));
        pnlCenter2.setLayout(flowLayout1);
        flowLayout1.setHgap(3);
        btnSqrt.setFont(new java.awt.Font("Dialog", Font.BOLD, 11));
        btnSqrt.setToolTipText("");
        btnSqrt.setText("Sqrt");
        btnSqrt.addActionListener(new FrmLayout_btnSqrt_actionAdapter(this));
        btnchange.setFont(new java.awt.Font("Dialog", Font.BOLD, 11));
        btnchange.setToolTipText("");
        btnchange.setText("+/-");
        btnchange.addActionListener(new FrmLayout_btnchange_actionAdapter(this));
        btnpoint.setFont(new java.awt.Font("Dialog", Font.BOLD, 11));
        btnpoint.setText(".");
        btnpoint.addActionListener(new FrmLayout_btnpoint_actionAdapter(this));
        btnpencent.setFont(new java.awt.Font("Dialog", Font.BOLD, 11));
        btnpencent.setToolTipText("");
        btnpencent.setText("%");
        btnpencent.addActionListener(new FrmLayout_btnpencent_actionAdapter(this));
        btnd.setFont(new java.awt.Font("Dialog", Font.BOLD, 11));
        btnd.setToolTipText("");
        btnd.setText("1/x");
        btnd.addActionListener(new FrmLayout_btnd_actionAdapter(this));
        btnCE.setFont(new java.awt.Font("Dialog", Font.BOLD | Font.ITALIC, 11));
        btnCE.setForeground(Color.red);
        btnCE.setPreferredSize(new Dimension(90, 25));
        btnCE.setText("CE");
        btnCE.addActionListener(new FrmLayout_jButton1_actionAdapter(this));
        btnback.setFont(new java.awt.Font("Dialog", Font.BOLD | Font.ITALIC, 11));
        btnback.setForeground(Color.red);
        btnback.setMaximumSize(new Dimension(81, 25));
        btnback.setMinimumSize(new Dimension(81, 25));
        btnback.setText("BACKSPACE");
        btnback.addActionListener(new FrmLayout_btnback_actionAdapter(this));
        pnlCenter1.setBounds(new Rectangle(0, 59, 333, 199));
        contentPane.add(pnlSouth, java.awt.BorderLayout.SOUTH);
        contentPane.add(pnlWest, java.awt.BorderLayout.WEST);
        contentPane.add(pnlEast, java.awt.BorderLayout.EAST);
        pnlNorth.setPreferredSize(new Dimension(10, 70));
        pnlNorth.setLayout(null);
        pnlCenter1.setBorder(BorderFactory.createEtchedBorder());
        pnlCenter1.setLayout(gridLayout1);
        pnlCenter1.add(btn7);
        pnlCenter1.add(btn8);
        pnlCenter1.add(btn9);
        pnlCenter1.add(btnDiv);
        pnlCenter1.add(btnSqrt);
        pnlCenter1.add(btn4);
        pnlCenter1.add(btn5);
        pnlCenter1.add(btn6);
        pnlCenter1.add(btnMul);
        pnlCenter1.add(btnpencent);
        pnlCenter1.add(btn1);
        pnlCenter1.add(btn2);
        pnlCenter1.add(btn3);
        pnlCenter1.add(btnSub);
        pnlCenter1.add(btnd);
        pnlCenter1.add(btn0);
        pnlCenter1.add(btnchange);
        pnlCenter1.add(btnpoint);
        pnlCenter1.add(btnAdd);
        pnlCenter1.add(btnEqu);
        pnlCenter.add(pnlCenter2);
        pnlCenter2.add(btnback);
        pnlCenter2.add(btnCE);
        pnlCenter2.add(btnC);
        pnlCenter.add(pnlCenter1);
        contentPane.add(pnlNorth, java.awt.BorderLayout.NORTH);
        pnlNorth.add(txt);
        contentPane.add(pnlCenter, java.awt.BorderLayout.CENTER);
    }
    //2--按钮事件处理方法
    public void btn0_actionPerformed(ActionEvent e) {
        if(flag){//重新输入数字
            txt.setText("0");
            flag=false;
        }else{
            if (txt.getText().equals("0")) {
                txt.setText("0");
            } else {
                txt.setText(txt.getText() + "0");
            }
        }
    }

解决方案 »

  1.   

        public void btn1_actionPerformed(ActionEvent e) {
            if(flag){//重新输入数字
                txt.setText("1");
                flag=false;
            }else{
                    txt.setText(txt.getText() + "1");
            }
        }    public void btn2_actionPerformed(ActionEvent e) {
            if(flag){//重新输入数字
                txt.setText("2");
                flag=false;
            }else{
                    txt.setText(txt.getText() + "2");
            }
        }    public void btnAdd_actionPerformed(ActionEvent e) {
            //--1 保存第一个操作数
            n1=Double.parseDouble(txt.getText());
            //--2 清空文本框
            txt.setText("");
            //--3 保存运算符
            op='+';
        }    public void btnEqu_actionPerformed(ActionEvent e) {
            //--1 保存第二个数
            n2=Double.parseDouble(txt.getText());
            //--2 计算
            switch(op){
            case '+':
                result=n1+n2;
                break;
            case '-':
                txt.setText("" +(n1-n2));
               result=n1-n2;
                break;
            case '*':
                result=n1*n2;
                break;
            case '/':
                if(n2==0){
                    clearAll();
                    txt.setText("除数不能为零");
                    flag2=false;//没有运算结果
                }else{
                    result = n1 / n2;
                }
                break;
            default:
                result=Double.parseDouble(txt.getText());
            }
            if(flag2){
                //--3 显示结果
                txt.setText("" + result);
            }
            //--4 改变标志位
            flag=true;
            flag2=true;
        }
        //初始化方法(重置)
        public void clearAll(){
            n1=0;
            n2=0;
            result=0;
            op=' ';
            flag=true;
            flag2=true;
            txt.setText("");
        }
        public void btnSub_actionPerformed(ActionEvent e) {
            //--1 保存第一个操作数
            n1=Double.parseDouble(txt.getText());
            //--2 清空文本框
            txt.setText("");
            //--3 保存运算符
            op='-';
        }    public void btnMul_actionPerformed(ActionEvent e) {
            //--1 保存第一个操作数
            n1=Double.parseDouble(txt.getText());
            //--2 清空文本框
            txt.setText("");
            //--3 保存运算符
            op='*';
        }    public void btnDiv_actionPerformed(ActionEvent e) {
            //--1 保存第一个操作数
            n1=Double.parseDouble(txt.getText());
            //--2 清空文本框
            txt.setText("");
            //--3 保存运算符
            op='/';
        }    public void btnC_actionPerformed(ActionEvent e) {
            clearAll();
        }    public void jButton1_actionPerformed(ActionEvent e) {
                txt.setText("");
        }    public void btn3_actionPerformed(ActionEvent e) {
            if(flag){//重新输入数字
                txt.setText("3");
                flag=false;
            }else{
                    txt.setText(txt.getText() + "3");
            }
        }    public void btn4_actionPerformed(ActionEvent e) {
            if(flag){//重新输入数字
                txt.setText("4");
                flag=false;
            }else{
                    txt.setText(txt.getText() + "4");
            }
        }    public void btn5_actionPerformed(ActionEvent e) {
            if(flag){//重新输入数字
                txt.setText("5");
                flag=false;
            }else{
                    txt.setText(txt.getText() + "5");
            }
        }    public void btn6_actionPerformed(ActionEvent e) {
            if(flag){//重新输入数字
                txt.setText("6");
                flag=false;
            }else{
                    txt.setText(txt.getText() + "6");
            }
        }    public void btn7_actionPerformed(ActionEvent e) {
            if(flag){//重新输入数字
                txt.setText("7");
                flag=false;
            }else{
                    txt.setText(txt.getText() + "7");
            }
        }    public void btn8_actionPerformed(ActionEvent e) {
            if(flag){//重新输入数字
                txt.setText("8");
                flag=false;
            }else{
                    txt.setText(txt.getText() + "8");
            }
        }    public void btn9_actionPerformed(ActionEvent e) {
            if(flag){//重新输入数字
                txt.setText("9");
                flag=false;
            }else{
                    txt.setText(txt.getText() + "9");
            }
        }    public void btnSqrt_actionPerformed(ActionEvent e) {
                n1=Integer.parseInt(txt.getText());
                result=Math.sqrt(n1);
                txt.setText(""+result);
                flag=true;
                flag2=true;
        }    public void btnpencent_actionPerformed(ActionEvent e) {
              txt.setText(""+Double.parseDouble(txt.getText())*0.01);
              flag=true;
        }    public void btnd_actionPerformed(ActionEvent e) {
            n1=1/Double.parseDouble(txt.getText());
            txt.setText(""+n1);
            flag=true;
        }    public void btnchange_actionPerformed(ActionEvent e) {
            n1=-Double.parseDouble(txt.getText());
            txt.setText(""+n1);
            flag=true;
        }    public void btnpoint_actionPerformed(ActionEvent e) {
             if(txt.getText().equals("")){
                 txt.setText("0.");
                 flag=false;
             }
             else if(txt.getText().indexOf('.')!=-1){
            }
             else{
                txt.setText(txt.getText()+'.');
             }
    }    public void btnback_actionPerformed(ActionEvent e) {
            if(txt.getText().equals("")){
                 txt.setText("");
                 flag=true;
            }
            else if(txt.getText().equals("")){
                 txt.setText("");
                 flag=true;
            }        else{
               StringBuffer s= new StringBuffer(txt.getText());
               txt.setText(s.delete(s.length()-1,s.length()).toString());
             }
        }
        class FrmLayout_btnpoint_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btnpoint_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.btnpoint_actionPerformed(e);
        }
    }
    class FrmLayout_btnd_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btnd_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.btnd_actionPerformed(e);
        }
    }
      

  2.   

    class FrmLayout_btnpencent_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btnpencent_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.btnpencent_actionPerformed(e);
        }
    }
    class FrmLayout_btnSqrt_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btnSqrt_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.btnSqrt_actionPerformed(e);
        }
    }
    class FrmLayout_btn9_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btn9_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.btn9_actionPerformed(e);
        }
    }
    class FrmLayout_btn8_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btn8_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.btn8_actionPerformed(e);
        }
    }
    class FrmLayout_btn7_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btn7_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.btn7_actionPerformed(e);
        }
    }
    class FrmLayout_btn6_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btn6_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.btn6_actionPerformed(e);
        }
    }
    class FrmLayout_btn5_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btn5_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.btn5_actionPerformed(e);
        }
    }
    class FrmLayout_btn4_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btn4_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.btn4_actionPerformed(e);
        }
    }
    class FrmLayout_jButton1_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_jButton1_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.jButton1_actionPerformed(e);
        }
    }
    class FrmLayout_btnC_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btnC_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.btnC_actionPerformed(e);
        }
    }
    class FrmLayout_btnDiv_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btnDiv_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.btnDiv_actionPerformed(e);
        }
    }
    class FrmLayout_btnMul_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btnMul_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.btnMul_actionPerformed(e);
        }
    }
    class FrmLayout_btnEqu_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btnEqu_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.btnEqu_actionPerformed(e);
        }
    }
    class FrmLayout_btnchange_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btnchange_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.btnchange_actionPerformed(e);
        }
    }
    class FrmLayout_btnAdd_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btnAdd_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {        adaptee.btnAdd_actionPerformed(e);
        }
    }
    class FrmLayout_btnSub_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btnSub_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.btnSub_actionPerformed(e);
        }
    }
    class FrmLayout_btn2_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btn2_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.btn2_actionPerformed(e);
        }
    }
    class FrmLayout_btn1_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btn1_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.btn1_actionPerformed(e);
        }
    }
    class FrmLayout_btn3_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btn3_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.btn3_actionPerformed(e);
        }
    }
    //1--按钮监听器
    class FrmLayout_btn0_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btn0_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {
            adaptee.btn0_actionPerformed(e);
        }
     }
    }
    class FrmLayout_btnback_actionAdapter implements ActionListener {
        private FrmLayout adaptee;
        FrmLayout_btnback_actionAdapter(FrmLayout adaptee) {
            this.adaptee = adaptee;
        }    public void actionPerformed(ActionEvent e) {        adaptee.btnback_actionPerformed(e);
        }
    }
    作业来的..帮帮忙
      

  3.   

    贴出代码应该是用代码插件贴出来。你的代码就不看了,给个思路给你:
    按照要求,应该使用四个变量分别保存第一个数(a)、运算符(%)、第二个数(b)和结果(s)
    第一次按下等号-->显示s
    连续按下等号-->s=s%b ,如果s为无效结果,s=a%b,否则显示s
      

  4.   

    Too Long,扫一眼超过1分钟看不完,就帮不上忙了