Java数据库设计计算器的运算问题

// 数字监听器 private class NumberAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { JButton jb = (JButton) e.getSource(); // 获取事件源对象 String input = jb.getText(); // 获取事件源对象上的标签 if (start) { // 首次输入 // 一上就".",就什么也不做 if (input.equals(".")) { return; } if (input.equals("退格")) { return; } // 如果是"0.0"的话,就清空 if (display.getText().equals("0.0")) { display.setText(""); } start = false;// 改变是否首次输入的标记值 } else { if (input.equals("退格")) { String s = display.getText(); if (Math.abs(Double.valueOf(display.getText()))>0.0) { s = s.substring(0,s.length()-1); if (s.equals("")) { s = "0.0"; start = true; } display.setText(s); } return; } // 判断显示区域的值里面是否已经有".",如果有,输入的又是".",就什么都不做 if (display.getText().indexOf(".") != -1) { if (input.equals(".")) { return; } } // 判断显示区域的值里面只有"-",输入的又是".",就什么都不做 if (display.getText().equals("-")) { if (input.equals(".")) { return; } } // 判断显示区域的值如果是"0",输入的不是".",就什么也不做 if (display.getText().equals("0")) { if (!input.equals(".")) { return; } } } // 如果我点击了运算符以后,再输入数字的话,就要清空显示区域的值 if (flag) { display.setText(""); flag = false;// 还原初始值,不需要清空 } display.setText(display.getText() + input);// 设置显示区域的值 } } // 运算符监听器 private class CommandAction implements ActionListener { @Override public void actionPerformed(ActionEvent e) { JButton jb = (JButton) e.getSource(); // 获取事件源对象 String inputCommand = jb.getText(); // 获取事件源对象上的标签 if (start) {// 首次输入 // 一上就是"-" if (inputCommand.equals("-") || inputCommand.equals("+/-")) { display.setText("-");// 显示区域的内容设置为"-" start = false;// 改变首次输入的标记 } } else { if (inputCommand.equals("+/-")) { double x = Double.parseDouble(display.getText()); x = -x; display.setText(String.valueOf(x)); return; } if (inputCommand.equals("1/x")) { double x = Double.parseDouble(display.getText()); x=1/x; display.setText(String.valueOf(x)); return; } } if (!flag) {// 如果flag=false不需要清空显示区的值,就调用方法计算 calculate(Double.parseDouble(display.getText()));// 保存显示区域的值,并计算 } // 保存你点击的运算符 lastCommand = inputCommand; flag = true;// 因为我这里已经输入过运算符, } } // 计算用的方法 private void calculate(double x) { if (lastCommand.equals("+")) { result += x; } else if (lastCommand.equals("-")) { result -= x; } else if (lastCommand.equals("*")) { result *= x; } else if (lastCommand.equals("/")) { result /= x; } else if (lastCommand.equals("%")) { result %= x; } else if (lastCommand.equals("1/x")) { result =1/result; } else if (lastCommand.equals("+/-")) { result = -result; } else if (lastCommand.equals("=")) { result = x; } display.setText("" + result); }} class MyFrameUitl { public static void init(JFrame jFrame, Dimension frameSize, String title, String iconFileName, boolean resizable) { // 系统工具包 这些代码的含义


import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileReader;
import java.io.FileWriter;

import javax.swing.JButton;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class 简单计算器  extends JFrame implements ActionListener{
    JTextField txtNum1,txtNum2,txtNum3;
    JComboBox<String> cbOpr;
    String opr[] = {"+","-","*","/"};
    JButton btnCalc;
    public 简单计算器() {
        super("简单计算器");
        
        txtNum1 = new JTextField(6);
        cbOpr = new JComboBox<String>(opr);
        txtNum2 = new JTextField(6);
        txtNum3 = new JTextField(6);
        btnCalc = new JButton("=");
        JPanel northPane = new JPanel(new FlowLayout());
        northPane.add(txtNum1);
        northPane.add(cbOpr);
        northPane.add(txtNum2);
        northPane.add(btnCalc);
        northPane.add(txtNum3);
        txtNum3.setEnabled(false);
        add(northPane);
        btnCalc.addActionListener(this);
        this.pack();
        setVisible(true);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setLocationRelativeTo(null);
        
    }
    @Override
    public void actionPerformed(ActionEvent e) {
        
        try {
            double num1 = Double.parseDouble(txtNum1.getText());
            double num2 = Double.parseDouble(txtNum2.getText());
            
            String line = num1 + "";
            int index = cbOpr.getSelectedIndex();
            switch(index) {
            case 0:
                txtNum3.setText((num1+num2)+"");
                line+= "+";
                break;
            case 1:
                txtNum3.setText((num1-num2)+"");
                line+= "-";
                break;
            case 2:
                txtNum3.setText((num1*num2)+"");
                line+= "*";
                break;
            case 3:
                txtNum3.setText((num1/num2)+"");
                line+= "/";
                break;
            }
            line+= num2 + "=" + txtNum3.getText();
            //保存到文件
            BufferedWriter br = new BufferedWriter(new FileWriter("d:\\calc.txt",true));
            br.write(line);
            br.newLine();
            br.close();
        }catch(Exception ex){
            System.out.println("出错了"+ex.getMessage());
        }
    }
    public static void main(String[] args) {
        new 简单计算器();
    }
}