# Problem with calculator

• 12-18-2012, 03:42 PM
SlickJava
Problem with calculator
The code below is my calculator, it does not work on minus and divide that well. When it divides, it answers are a decimal e.g. 6/3 = 0.5, when it subtracts, it adds a negative sign to the answer e.g. 5 - 3 = -2
Code:

```import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Calculator extends JFrame {           private static final long serialVersionUID = 1L;     private JButton jbtNum1;     private JButton jbtNum2;     private JButton jbtNum3;     private JButton jbtNum4;     private JButton jbtNum5;     private JButton jbtNum6;     private JButton jbtNum7;     private JButton jbtNum8;     private JButton jbtNum9;     private JButton jbtNum0;     private JButton jbtAdd;     private JButton jbtSubtract;     private JButton jbtMultiply;     private JButton jbtDivide;     private JButton jbtSolve;     private JButton jbtClear;     private double TEMP;     private double SolveTEMP; private JTextField jtfResult; Boolean addBool = false ; Boolean subBool = false ; Boolean divBool = false ; Boolean mulBool = false ; String display = ""; public Calculator() {     JPanel p1 = new JPanel();     p1.setLayout(new GridLayout(4, 3));     p1.add(jbtNum1 = new JButton("1"));     p1.add(jbtNum2 = new JButton("2"));     p1.add(jbtNum3 = new JButton("3"));     p1.add(jbtNum4 = new JButton("4"));     p1.add(jbtNum5 = new JButton("5"));     p1.add(jbtNum6 = new JButton("6"));     p1.add(jbtNum7 = new JButton("7"));     p1.add(jbtNum8 = new JButton("8"));     p1.add(jbtNum9 = new JButton("9"));     p1.add(jbtNum0 = new JButton("0"));     p1.add(jbtClear = new JButton("C"));     JPanel p2 = new JPanel();     p2.setLayout(new FlowLayout());     p2.add(jtfResult = new JTextField(20));     jtfResult.addActionListener(new ActionListener() {             public void actionPerformed(ActionEvent e) {             }     });     jtfResult.setHorizontalAlignment(JTextField.RIGHT);     jtfResult.setEditable(false);             JPanel p3 = new JPanel();             p3.setLayout(new GridLayout(5, 1));             p3.add(jbtAdd = new JButton("+"));             p3.add(jbtSubtract = new JButton("-"));             p3.add(jbtMultiply = new JButton("x"));             p3.add(jbtDivide = new JButton("/"));             p3.add(jbtSolve = new JButton("="));     JPanel p = new JPanel();     p.setLayout(new GridLayout());     p.add(p2, BorderLayout.NORTH);     p.add(p1, BorderLayout.SOUTH);     p.add(p3, BorderLayout.EAST);     getContentPane().add(p);     jbtNum1.addActionListener(new ListenToOne());     jbtNum2.addActionListener(new ListenToTwo());     jbtNum3.addActionListener(new ListenToThree());     jbtNum4.addActionListener(new ListenToFour());     jbtNum5.addActionListener(new ListenToFive());     jbtNum6.addActionListener(new ListenToSix());     jbtNum7.addActionListener(new ListenToSeven());     jbtNum8.addActionListener(new ListenToEight());     jbtNum9.addActionListener(new ListenToNine());     jbtNum0.addActionListener(new ListenToZero());     jbtAdd.addActionListener(new ListenToAdd());     jbtSubtract.addActionListener(new ListenToSubtract());     jbtMultiply.addActionListener(new ListenToMultiply());     jbtDivide.addActionListener(new ListenToDivide());     jbtSolve.addActionListener(new ListenToSolve());     jbtClear.addActionListener(new ListenToClear()); } class ListenToClear implements ActionListener {     public void actionPerformed(ActionEvent e) {         jtfResult.setText("");         addBool = false ;         subBool = false ;         mulBool = false ;         divBool = false ;         TEMP = 0;         SolveTEMP = 0 ;     } } class ListenToOne implements ActionListener {     public void actionPerformed(ActionEvent e) {         display = jtfResult.getText();         jtfResult.setText(display + "1");     } } class ListenToTwo implements ActionListener {     public void actionPerformed(ActionEvent e) {         display = jtfResult.getText();         jtfResult.setText(display + "2");     } } class ListenToThree implements ActionListener {     public void actionPerformed(ActionEvent e) {         display = jtfResult.getText();         jtfResult.setText(display + "3");     } } class ListenToFour implements ActionListener {     public void actionPerformed(ActionEvent e) {         display = jtfResult.getText();         jtfResult.setText(display + "4");     } } class ListenToFive implements ActionListener {     public void actionPerformed(ActionEvent e) {         display = jtfResult.getText();         jtfResult.setText(display + "5");     } }        class ListenToSix implements ActionListener {     public void actionPerformed(ActionEvent e) {         display = jtfResult.getText();         jtfResult.setText(display + "6");     } } class ListenToSeven implements ActionListener {     public void actionPerformed(ActionEvent e) {         display = jtfResult.getText();         jtfResult.setText(display + "7");     } } class ListenToEight implements ActionListener {     public void actionPerformed(ActionEvent e) {         display = jtfResult.getText();         jtfResult.setText(display + "8");     } } class ListenToNine implements ActionListener {     public void actionPerformed(ActionEvent e) {         display = jtfResult.getText();         jtfResult.setText(display + "9");     } } class ListenToZero implements ActionListener {     public void actionPerformed(ActionEvent e) {         display = jtfResult.getText();         jtfResult.setText(display + "0");     } }     class ListenToAdd implements ActionListener {     public void actionPerformed(ActionEvent e) {         TEMP = Double.parseDouble(jtfResult.getText());                     jtfResult.setText("");                     addBool = true ;     } } class ListenToSubtract implements ActionListener {     public void actionPerformed(ActionEvent e) {         TEMP = Double.parseDouble(jtfResult.getText());         jtfResult.setText("");         subBool = true;     } } class ListenToMultiply implements ActionListener {     public void actionPerformed(ActionEvent e) {         TEMP = Double.parseDouble(jtfResult.getText());         jtfResult.setText("");         mulBool = true;     } } class ListenToDivide implements ActionListener {     public void actionPerformed(ActionEvent e) {         TEMP = Double.parseDouble(jtfResult.getText());         jtfResult.setText("");         divBool = true;     } } class ListenToSolve implements ActionListener {     public void actionPerformed(ActionEvent e) {                     SolveTEMP = Double.parseDouble(  jtfResult.getText() );                     if ( addBool == true  )                         SolveTEMP = SolveTEMP + TEMP;                     else if ( subBool == true  )                         SolveTEMP = SolveTEMP - TEMP;                     else if ( mulBool == true  )                         SolveTEMP = SolveTEMP * TEMP;                     else if ( divBool == true  )                         SolveTEMP = SolveTEMP / TEMP;         jtfResult.setText(  Double.toString( SolveTEMP ) );         addBool = false ;         subBool = false ;         mulBool = false ;         divBool = false ;     } } public static void main(String[] args) {     // TODO Auto-generated method stub     Calculator calc = new Calculator();     calc.pack();     calc.setLocationRelativeTo(null);             calc.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);     calc.setVisible(true); } }```
• 12-18-2012, 03:49 PM
Tolls
Re: Problem with calculator
What does "does not work" mean?
• 12-18-2012, 03:53 PM
SlickJava
Re: Problem with calculator
Quote:

Originally Posted by Tolls
What does "does not work" mean?

it does not work on minus and divide that well. When it divides, it answers are a decimal e.g. 6/3 = 0.5, when it subtracts, it adds a negative sign to the answer e.g. 5 - 3 = -2
• 12-18-2012, 04:26 PM
Tolls
Re: Problem with calculator
That looks to me like you have your left and rights the wrong way round.
You seem to be doing 3/6 when you should be doing 6/3, and 3 - 5 when you should be doing 5 - 3.

So look at the order you are working with your values.
You might want to use some println() debugging statements in there.
• 12-19-2012, 03:19 AM
SlickJava
Re: Problem with calculator
Quote:

Originally Posted by Tolls
That looks to me like you have your left and rights the wrong way round.
You seem to be doing 3/6 when you should be doing 6/3, and 3 - 5 when you should be doing 5 - 3.

So look at the order you are working with your values.
You might want to use some println() debugging statements in there.

Thank you sooooooooooo much! That helped a lot! Thanks!