0

i am pretty new with JAVA and tried to programm a calculator with basic math operations. I finished writing(copying) the code and tried it. Then i get this exception when a buttonevent occurs.

I also tried the original sourcecode but i can't find my mistake. Please help me :)

"My Code":

package calculator;

import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

public class Calculator   {
    public static void main(String[] args) {
       CalculatorFrame frame = new CalculatorFrame();
       frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
       frame.setVisible(true);
    }  
}


class CalculatorFrame extends JFrame  {
    public CalculatorFrame() {
       setTitle("Calculator"); 
       setSize(300, 300);
       CalculatorPanel panel = new CalculatorPanel();
       add(panel);
       pack();
    }  
}

class CalculatorPanel extends JPanel  {
    public CalculatorPanel() {
       setLayout(new BorderLayout());   
       start = true;
       panel = new JPanel();
       display = new JButton("0");
       display.setEnabled(false);
       add(display, BorderLayout.NORTH);
       ActionListener insert = new InsertAction();
       ActionListener command = new CommandAction();
       panel.setLayout( new GridLayout(4, 4) ); 
       //
       addButton("7", insert);
       addButton("8", insert);
       addButton("9", insert);
       addButton("/", command);

       addButton("4", insert);
       addButton("5", insert);
       addButton("6", insert);
       addButton("*", command);

       addButton("1", insert);
       addButton("2", insert);
       addButton("3", insert);
       addButton("-", command);

       addButton("0", insert);
       addButton(".", insert);
       addButton("=", command);
       addButton("+", command);
       //
       add(panel, BorderLayout.CENTER);      
    }

    private void addButton(String label, ActionListener listener) {
        JButton button = new JButton(label);
        button.addActionListener(listener);
        panel.add(button);
    }

    private class InsertAction implements ActionListener {
        public void actionPerformed(ActionEvent event) {
            String input = event.getActionCommand();
            if (start) {
                display.setText("");
                start = false;
            }
            display.setText(display.getText() + input);
        }
    }

    private class CommandAction implements ActionListener {

        public void actionPerformed(ActionEvent event) {
            String command = event.getActionCommand();

            if (start) {
                if  (command.equals("-")) {
                    display.setText(command);
                    start = false;
                } else
                    lastCommand = command;
            } else {
                calculate(Double.parseDouble(display.getText()));
                lastCommand = command;
                start = true;
            }
        }
    }

    public 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;
       display.setText("" + result);
    }

    private JButton display;
    private JPanel panel;
    private double result;
    private String lastCommand;
    private boolean start;  
}

original source: http://www.codeplanet.eu/tutorials/java/3-taschenrechner.html?start=2

Edwin Buck
  • 69,361
  • 7
  • 100
  • 138
WorstCase
  • 25
  • 1
  • 1
  • 4
  • 1
    *"..get this exception when a buttonevent occurs"* (Looks around.) What exception? Always copy/paste error & exception output. Also note: A single blank line of white space in source code is *always* enough. Blank lines after `{` or before `}` are also typically redundant. – Andrew Thompson Aug 23 '13 at 20:00
  • BTW - See [this answer](http://stackoverflow.com/questions/7441625/how-to-find-a-button-source-in-awt-calculator-homework/7441804#7441804) for a working example of a calculator. Unless this is for homework (in which you are supposed to parse the input yourself), that example is how I would approach the task. – Andrew Thompson Aug 23 '13 at 20:07

0 Answers0