jubi_
2015-05-30 14:14
采纳率: 66.7%
浏览 3.1k
已采纳

一个简单计算器java程序,不知道为什么除法总是算错

一个简单计算器java程序,不知道为什么除法总是算错(不是全概率是高概率应该说,麻烦大大帮忙看看,非常感激

 package com.calculator;

import java.awt.BorderLayout;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.border.TitledBorder;
import javax.swing.JTextField;
import java.awt.FlowLayout;
import javax.swing.BoxLayout;
import java.awt.GridLayout;
import com.jgoodies.forms.layout.FormLayout;
import com.jgoodies.forms.layout.ColumnSpec;
import com.jgoodies.forms.factories.FormFactory;
import com.jgoodies.forms.layout.RowSpec;
import javax.swing.GroupLayout;
import javax.swing.GroupLayout.Alignment;
import javax.swing.JButton;
import java.awt.Dimension;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.Component;
import java.awt.Point;

public class Calculator_ extends JFrame {

    private JPanel contentPane;
    private JTextField tf;
    private JButton b7;
    private JButton b8;
    private JButton b9;
    private JButton b4;
    private JButton b5;
    private JButton b6;
    private JPanel panel_1;
    private JButton b1;
    private JButton b2;
    private JButton b3;
    private JButton b0;
    private JButton bpoint;
    private JButton badd;
    private JButton bcut;
    private JButton bmul;
    private JButton bdiv;
    private JButton bresult;
    private JButton bempty;
    StringBuilder sb=new StringBuilder("");
    StringBuilder sb2=new StringBuilder("");
    char c;
    double d;
    /**
     * Launch the application.
     */
    public static void main(String[] args) {
        EventQueue.invokeLater(new Runnable() {
            public void run() {
                try {
                    Calculator_ frame = new Calculator_();
                    frame.setVisible(true);
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
        });
    }

    /**
     * Create the frame.
     */
    public Calculator_() {
        setTitle("calculator");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setBounds(100, 100, 384, 279);
        contentPane = new JPanel();
        contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
        setContentPane(contentPane);
        contentPane.setLayout(null);

        JPanel panel = new JPanel();
        panel.setBounds(0, 0, 432, 55);
        contentPane.add(panel);
        panel.setLayout(new BorderLayout(0, 0));

        tf = new JTextField();
        tf.setEditable(false);
        panel.add(tf);
        tf.setColumns(10);

        panel_1 = new JPanel();
        panel_1.setBounds(436, 53, -434, 260);
        contentPane.add(panel_1);

        b7 = new JButton("7");
        b7.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                sb.append("7");
                tf.setText(sb.toString());
            }
        });
        b7.setBounds(0, 53, 80, 46);
        contentPane.add(b7);

        b8 = new JButton("8");
        b8.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                sb.append("8");
                tf.setText(sb.toString());
            }
        });
        b8.setBounds(78, 53, 80, 46);
        contentPane.add(b8);

        b9 = new JButton("9");
        b9.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent arg0) {
                sb.append("9");
                tf.setText(sb.toString());
            }
        });
        b9.setBounds(158, 53, 80, 46);
        contentPane.add(b9);

        b4 = new JButton("4");
        b4.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                sb.append("4");
                tf.setText(sb.toString());
            }
        });
        b4.setBounds(0, 97, 80, 46);
        contentPane.add(b4);

        b5 = new JButton("5");
        b5.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                sb.append("5");
                tf.setText(sb.toString());
            }
        });
        b5.setBounds(78, 97, 80, 46);
        contentPane.add(b5);

        b6 = new JButton("6");
        b6.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent arg0) {
                sb.append("6");
                tf.setText(sb.toString());
            }
        });
        b6.setBounds(158, 97, 80, 46);
        contentPane.add(b6);

        b1 = new JButton("1");
        b1.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                sb.append("1");
                tf.setText(sb.toString());
            }
        });
        b1.setBounds(0, 144, 80, 46);
        contentPane.add(b1);

        b2 = new JButton("2");
        b2.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                sb.append("2");
                tf.setText(sb.toString());
            }
        });
        b2.setBounds(78, 144, 80, 46);
        contentPane.add(b2);

        b3 = new JButton("3");
        b3.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                sb.append("3");
                tf.setText(sb.toString());
            }
        });
        b3.setBounds(158, 144, 80, 46);
        contentPane.add(b3);

        b0 = new JButton("0");
        b0.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                sb.append("0");
                tf.setText(sb.toString());
            }
        });
        b0.setBounds(0, 189, 158, 46);
        contentPane.add(b0);

        bpoint = new JButton(".");
        bpoint.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                sb.append(".");
                tf.setText(sb.toString());
            }
        });
        bpoint.setBounds(158, 189, 80, 46);
        contentPane.add(bpoint);

        badd = new JButton("+");
        badd.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                sb2=sb;
                sb=new StringBuilder("");
                c='+';
                tf.setText("");
            }
        });
        badd.setBounds(236, 97, 66, 46);
        contentPane.add(badd);

        bcut = new JButton("-");
        bcut.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                sb2=sb;
                sb=new StringBuilder("");
                c='-';
                tf.setText("");
            }
        });
        bcut.setBounds(236, 144, 66, 46);
        contentPane.add(bcut);

        bmul = new JButton("*");
        bmul.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                sb2=sb;
                sb=new StringBuilder("");
                c='*';
                tf.setText("");
            }
        });
        bmul.setBounds(301, 97, 66, 46);
        contentPane.add(bmul);

        bdiv = new JButton("/");
        bdiv.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                sb2=sb;
                sb=new StringBuilder("");
                c='/';
                tf.setText("");
            }
        });
        bdiv.setBounds(301, 144, 66, 46);
        contentPane.add(bdiv);

        bempty = new JButton("empty");
        bempty.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                sb=new StringBuilder("");
                sb2=new StringBuilder("");
                tf.setText("");
            }
        });
        bempty.setBounds(236, 53, 131, 46);
        contentPane.add(bempty);

        bresult = new JButton("=");
        bresult.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent arg0) {             
                    try {
                        switch (c) {
                        case '+':
                            d = Double.parseDouble(sb.toString())
                                    + Double.parseDouble(sb2.toString());
                            break;
                        case '-':
                            d = Double.parseDouble(sb.toString())
                                    - Double.parseDouble(sb2.toString());
                            break;
                        case '*':
                            d = Double.parseDouble(sb.toString())
                                    * Double.parseDouble(sb2.toString());
                            break;
                        case '/':
                            d = Double.parseDouble(sb.toString().trim())
                                    / Double.parseDouble(sb2.toString().trim());
                            break;
                        }
                        tf.setText("" + d);
                    } catch (NumberFormatException e) {
                        tf.setText("输入数据格式出错,请清空重新输入");
                    }                   
            }
        });
        bresult.setBounds(236, 189, 131, 45);
        contentPane.add(bresult);
    }
}
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • danielinbiti 2015-05-30 14:22
    已采纳
     try {
                            switch (c) {
                            case '+':
                                d = Double.parseDouble(sb.toString())
                                        + Double.parseDouble(sb2.toString());
                                break;
                            case '-':
                                d = Double.parseDouble(sb.toString())
                                        - Double.parseDouble(sb2.toString());
                                break;
                            case '*':
                                d = Double.parseDouble(sb.toString())
                                        * Double.parseDouble(sb2.toString());
                                break;
                            case '/':
                                d = Double.parseDouble(sb.toString().trim())
                                        / Double.parseDouble(sb2.toString().trim());
                                break;
                            }
                            tf.setText("" + d);
                        } catch (NumberFormatException e) {
                            tf.setText("输入数据格式出错,请清空重新输入");
                        }  
    减法和除法都反了
    应该是sb2除以或者减去sb
    case '-':
                                d = Double.parseDouble(sb2.toString());
                                        - Double.parseDouble(sb.toString())
                                break;
                            case '/':
                                d = Double.parseDouble(sb2.toString().trim())
                                        / Double.parseDouble(sb.toString().trim());
                                break;
    
    
    点赞 打赏 评论
  • guwei4037 2015-05-30 14:20

    用BigDecimal做四则运算试试。
    http://bbs.csdn.net/topics/390152581

    点赞 打赏 评论
  • WorldMobile 2015-05-30 14:37
    点赞 打赏 评论

相关推荐 更多相似问题