Welcome to Dream.In.Code
Getting Java Help is Easy!

Join 136,230 Java Programmers for FREE! Get instant access to thousands of Java experts, tutorials, code snippets, and more! There are 2,310 people online right now. Registration is fast and FREE... Join Now!




add & subtract

 
Reply to this topicStart new topic

add & subtract

nu2java
13 Oct, 2008 - 10:44 AM
Post #1

New D.I.C Head
*

Joined: 10 Oct, 2008
Posts: 4


I am having trouble writing a program...This program should add and subtract.

As soon as I write in the subtraction feature- it screws the whole program up. If I take it out it will the add correctly.








CODE

mport java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class MiniCalculator {
    private static final int FRAME_WIDTH = 200;
    private static final int FRAME_HEIGHT = 120;

    // Keeps track of the current operation (subtract, add, etc)
    private static final int NO_OPERATION = 0;
    private static final int ADDITION = 1;
    private static final int SUBTRACTION = 1;

    public static int operation = NO_OPERATION;

    public static JTextField textFieldDisplay;
    public static double Value1 = 0; // holds the value before the operation

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout(new GridLayout(6, 5) );
        frame.add(buttonPanel);

        textFieldDisplay = new JTextField();
        buttonPanel.add(textFieldDisplay);
        JButton buttonPlus = new JButton(" + ");
        buttonPanel.add(buttonPlus);
        JButton buttonMinus = new JButton("-");
        buttonPanel.add(buttonMinus);
        JButton buttonEqual = new JButton(" = ");
        buttonPanel.add(buttonEqual);
        frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
        frame.setTitle("Mini-Calculator");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);

    class EqualSignListener implements ActionListener {

        public void actionPerformed(ActionEvent event)
        {
            double Value2 = Double.parseDouble(textFieldDisplay.getText());
            if (operation == ADDITION) {
                Value2 += Value1;
        }

            if (operation == SUBTRACTION) {
                Value2 -=Value1;
        }


            // Convert from a number to a string
            Double answer = new Double(Value2);
            textFieldDisplay.setText( answer.toString() );
            // Reset the operation to show no current operation
            operation = NO_OPERATION;
        }

    }
    class PlusSignListener implements ActionListener {

        public void actionPerformed(ActionEvent event)
        {
            Value1 = Double.parseDouble(textFieldDisplay.getText());
            operation = ADDITION;
        }
    }
    class MinusSignListener implements ActionListener {
        public void actionPerformed(ActionEvent event)
        {
            Value1 = Double.parseDouble(textFieldDisplay.getText());
            operation = SUBTRACTION;
        }
    }
    ActionListener plusSignListener = new PlusSignListener();
    buttonPlus.addActionListener(plusSignListener);

    ActionListener minusSignListener = new MinusSignListener();
    buttonMinus.addActionListener(minusSignListener);

    ActionListener equalSignListener = new EqualSignListener();
    buttonEqual.addActionListener(equalSignListener);


    }
}

User is offlineProfile CardPM
+Quote Post

Gloin
RE: Add & Subtract
13 Oct, 2008 - 11:09 AM
Post #2

On MeD.i.Cation
Group Icon

Joined: 4 Aug, 2008
Posts: 723



Thanked: 47 times
My Contributions
private static final int ADDITION = 1;
private static final int SUBTRACTION = 1;

Both constants are assigned the same value.

if (operation == ADDITION) {
Value2 += Value1;
}

if (operation == SUBTRACTION) {
Value2 -=Value1;
}

So when your program gets here it will first perform the addition, then the subtraction..
User is offlineProfile CardPM
+Quote Post

nu2java
RE: Add & Subtract
13 Oct, 2008 - 11:38 AM
Post #3

New D.I.C Head
*

Joined: 10 Oct, 2008
Posts: 4

Thanks...I'm starting to understand...I put an "else if" in and now the addition works again but it still adds if I try to subtract.







CODE

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class MiniCalculator {
    private static final int FRAME_WIDTH = 200;
    private static final int FRAME_HEIGHT = 120;

    // Keeps track of the current operation (subtract, add, etc)
    private static final int NO_OPERATION = 0;
    private static final int ADDITION = 1;
    private static final int SUBTRACTION = 1;

    public static int operation = NO_OPERATION;

    public static JTextField textFieldDisplay;
    public static double Value1 = 0; // holds the value before the operation

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout(new GridLayout(6, 5) );
        frame.add(buttonPanel);

        textFieldDisplay = new JTextField();
        buttonPanel.add(textFieldDisplay);
        JButton buttonPlus = new JButton(" + ");
        buttonPanel.add(buttonPlus);
        JButton buttonMinus = new JButton("-");
        buttonPanel.add(buttonMinus);
        JButton buttonEqual = new JButton(" = ");
        buttonPanel.add(buttonEqual);
        frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
        frame.setTitle("Mini-Calculator");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);

    class EqualSignListener implements ActionListener {

        public void actionPerformed(ActionEvent event)
        {
            double Value2 = Double.parseDouble(textFieldDisplay.getText());
            if (operation == ADDITION) {
                Value2 += Value1;
        }

            else if (operation == SUBTRACTION) {
                Value2 -=Value1;
        }


            // Convert from a number to a string
            Double answer = new Double(Value2);
            textFieldDisplay.setText( answer.toString() );
            // Reset the operation to show no current operation
            operation = NO_OPERATION;
        }

    }
    class PlusSignListener implements ActionListener {

        public void actionPerformed(ActionEvent event)
        {
            Value1 = Double.parseDouble(textFieldDisplay.getText());
            operation = ADDITION;
        }
    }
    class MinusSignListener implements ActionListener {
        public void actionPerformed(ActionEvent event)
        {
            Value1 = Double.parseDouble(textFieldDisplay.getText());
            operation = SUBTRACTION;
        }
    }
    ActionListener plusSignListener = new PlusSignListener();
    buttonPlus.addActionListener(plusSignListener);

    ActionListener minusSignListener = new MinusSignListener();
    buttonMinus.addActionListener(minusSignListener);

    ActionListener equalSignListener = new EqualSignListener();
    buttonEqual.addActionListener(equalSignListener);


    }
}

User is offlineProfile CardPM
+Quote Post

Gloin
RE: Add & Subtract
13 Oct, 2008 - 11:40 AM
Post #4

On MeD.i.Cation
Group Icon

Joined: 4 Aug, 2008
Posts: 723



Thanked: 47 times
My Contributions
Of course it does. The constants still have the same value and in the if-statement it will evaluate addition to true and subtraction won't be evaluated.

Perhaps you should assign the constant SUBTRACTION the value -1 instead!?

This post has been edited by Gloin: 13 Oct, 2008 - 11:41 AM
User is offlineProfile CardPM
+Quote Post

nu2java
RE: Add & Subtract
13 Oct, 2008 - 04:48 PM
Post #5

New D.I.C Head
*

Joined: 10 Oct, 2008
Posts: 4

QUOTE(Gloin @ 13 Oct, 2008 - 12:40 PM) *

Of course it does. The constants still have the same value and in the if-statement it will evaluate addition to true and subtraction won't be evaluated.

Perhaps you should assign the constant SUBTRACTION the value -1 instead!?


Thanks- the subtract now works... I also was able to add multiply & divide. Do you know where I would start if I wanted to implement a "clear" function?


CODE

import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

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

public class MiniCalculator {
    private static final int FRAME_WIDTH = 200;
    private static final int FRAME_HEIGHT = 120;

    // Keeps track of the current operation (subtract, add, etc)
    private static final int NO_OPERATION = 0;
    private static final int ADDITION = 1;
    private static final int SUBTRACTION = -1;
    private static final int DIVISION = 2;
    private static final int MULTIPLICATION = 12;
    public static int operation = NO_OPERATION;

    public static JTextField textFieldDisplay;
    public static double Value1 = 0; // holds the value before the operation

    public static void main(String[] args) {
        JFrame frame = new JFrame();
        JPanel buttonPanel = new JPanel();
        buttonPanel.setLayout(new GridLayout(6, 5) );
        frame.add(buttonPanel);

        textFieldDisplay = new JTextField();
        buttonPanel.add(textFieldDisplay);
        JButton buttonClear = new JButton(" Clear ");
        buttonPanel.add(buttonClear);
        JButton buttonPlus = new JButton(" + ");
        buttonPanel.add(buttonPlus);
        JButton buttonMinus = new JButton(" - ");
        buttonPanel.add(buttonMinus);
        JButton buttonDivide = new JButton(" / ");
        buttonPanel.add(buttonDivide);
        JButton buttonMultiply = new JButton(" X ");
        buttonPanel.add(buttonMultiply);
        JButton buttonEqual = new JButton(" = ");
        buttonPanel.add(buttonEqual);
        frame.setSize(FRAME_WIDTH, FRAME_HEIGHT);
        frame.setTitle("Mini-Calculator");
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setVisible(true);

    class EqualSignListener implements ActionListener {

        public void actionPerformed(ActionEvent event)
        {
            double Value2 = Double.parseDouble(textFieldDisplay.getText());
            if (operation == ADDITION) {
                Value2 += Value1;
        }

            if (operation == SUBTRACTION) {
                Value2 -=Value1;
        }

            if (operation == DIVISION) {
                Value2 = Value1 / Value2;
        }

            if (operation == MULTIPLICATION) {
                Value2 = Value1 * Value2;
        }

            // Convert from a number to a string
            Double answer = new Double(Value2);
            textFieldDisplay.setText( answer.toString() );
            // Reset the operation to show no current operation
            operation = NO_OPERATION;
        }

    }
    class PlusSignListener implements ActionListener {
        public void actionPerformed(ActionEvent event)
        {
            Value1 = Double.parseDouble(textFieldDisplay.getText());
            operation = ADDITION;
        }
    }
    class MinusSignListener implements ActionListener {
        public void actionPerformed(ActionEvent event)
        {
            Value1 = Double.parseDouble(textFieldDisplay.getText());
            operation = SUBTRACTION;
        }
    }
    class DivideSignListener implements ActionListener {
        public void actionPerformed(ActionEvent event)
        {
            Value1 = Double.parseDouble(textFieldDisplay.getText());
            operation = DIVISION;

        }
    }
    class MultiplySignListener implements ActionListener {
            public void actionPerformed(ActionEvent event)
            {
                Value1 = Double.parseDouble(textFieldDisplay.getText());
                operation = MULTIPLICATION;

            }
        }


    ActionListener plusSignListener = new PlusSignListener();
    buttonPlus.addActionListener(plusSignListener);

    ActionListener minusSignListener = new MinusSignListener();
    buttonMinus.addActionListener(minusSignListener);

    ActionListener divideSignListener = new DivideSignListener();
    buttonDivide.addActionListener(divideSignListener);

    ActionListener multiplySignListener = new MultiplySignListener();
    buttonMultiply.addActionListener(multiplySignListener);

    ActionListener equalSignListener = new EqualSignListener();
    buttonEqual.addActionListener(equalSignListener);


    }
}

User is offlineProfile CardPM
+Quote Post

Gloin
RE: Add & Subtract
13 Oct, 2008 - 04:59 PM
Post #6

On MeD.i.Cation
Group Icon

Joined: 4 Aug, 2008
Posts: 723



Thanked: 47 times
My Contributions
What is the pupose of the clear function?
User is offlineProfile CardPM
+Quote Post

nu2java
RE: Add & Subtract
13 Oct, 2008 - 07:17 PM
Post #7

New D.I.C Head
*

Joined: 10 Oct, 2008
Posts: 4

QUOTE(Gloin @ 13 Oct, 2008 - 05:59 PM) *

What is the pupose of the clear function?


the clear function would clear anything that was inadvertently inputed.
User is offlineProfile CardPM
+Quote Post

Fast ReplyReply to this topicStart new topic
Time is now: 12/2/08 03:18AM

Live Java Help!

Java Tutorials

Reference Sheets

Java Snippets

DIC Chatroom

Bye Bye Ads

Monthly Drawing

Thumb Drive

Top Contributors

Top 10 Kudos This Month