Rekenmachine vraag

Status
Niet open voor verdere reacties.

Mitsie007

Gebruiker
Lid geworden
21 okt 2006
Berichten
276
Hey hoi!

Even korte voorstel, ik ben Myrthe en doe sinds afgelopen jaar Informatica. In mijn vrije tijd ben ik aan het bijstuderen en momenteel is het vak wat ik studeer java. Puur voor de lol ben ik aan het proberen mijn programma's zo goed mogelijk te maken en zo veel mogelijk fouten eruit te halen. Helaas lukt dat niet altijd.

Misschien dat jullie mij kunnen helpen. Ik heb een rekenmachine gemaakt en die doet het. (vraag niet hoe, hahaha. ) Wat ik momenteel heel graag wil is het volgende:

op het moment dat ik 3+4 = heb getypt komt het getal 7 eruit. Daar wil ik vervolgens wel weer wat mee kunnen doen als ik op + of - o.i.d heb geklikt. Mij lukt dat momenteel nog niet zo erg, maar heb het wel geprobeerd.
Als je denkt dat je kan helpen of misschien nog tips hebt... graag! Alle reactie is welkom.

Code:
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package opdr1;

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

public class Rekenmachine2 extends JFrame {

    private JTextField text;
    private JButton plus,  min,  keer,  deel,  correctie,  isKnop;
    private JButton knop[];
    private JLabel auteur;
    private String ingevoerd1,  ingevoerd2,  operator,  bewaar;
    private int invoer1,  invoer2,  uitvoer;

    public Rekenmachine2() {
        setLayout(new FlowLayout());

        knop = new JButton[10];
        operator = "";
        ingevoerd1 = "";
        ingevoerd2 = "";


        text = new JTextField(15);
        add(text);

        knop[7] = new JButton("7");
        add(knop[7]);
        knop[7].addActionListener(new knopHandler());

        knop[8] = new JButton("8");
        add(knop[8]);
        knop[8].addActionListener(new knopHandler());

        knop[9] = new JButton("9");
        add(knop[9]);
        knop[9].addActionListener(new knopHandler());

        min = new JButton("-");
        add(min);
        min.addActionListener(new operatorHandler());

        knop[4] = new JButton("4");
        add(knop[4]);
        knop[4].addActionListener(new knopHandler());

        knop[5] = new JButton("5");
        add(knop[5]);
        knop[5].addActionListener(new knopHandler());

        knop[6] = new JButton("6");
        add(knop[6]);
        knop[6].addActionListener(new knopHandler());

        plus = new JButton("+");
        add(plus);
        plus.addActionListener(new operatorHandler());

        knop[1] = new JButton("1");
        add(knop[1]);
        knop[1].addActionListener(new knopHandler());

        knop[2] = new JButton("2");
        add(knop[2]);
        knop[2].addActionListener(new knopHandler());

        knop[3] = new JButton("3");
        add(knop[3]);
        knop[3].addActionListener(new knopHandler());

        keer = new JButton("*");
        add(keer);
        keer.addActionListener(new operatorHandler());

        knop[0] = new JButton("0");
        add(knop[0]);
        knop[0].addActionListener(new knopHandler());

        deel = new JButton("/");
        add(deel);
        deel.addActionListener(new operatorHandler());

        correctie = new JButton("C");
        add(correctie);
        correctie.addActionListener(new CancelHandler());

        isKnop = new JButton("=");
        add(isKnop);
        isKnop.addActionListener(new operatorHandler());

        auteur = new JLabel("Created by  © Myrthe");
        add(auteur);

        setTitle("Rekenmachine");
        setSize(200, 210);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setVisible(true);
    }

    class knopHandler implements ActionListener {

        public void actionPerformed(ActionEvent e) {
            if (operator == "") {
                for (int i = 0; i < 10; i++) {
                    if (e.getSource() == knop[i]) {
                        ingevoerd1 += i;
                        invoer1 = Integer.parseInt(ingevoerd1);
                        text.setText("");
                        text.setText("" + invoer1);
                    }
                }
            } else {
                for (int i = 0; i < 10; i++) {
                    if (e.getSource() == knop[i]) {
                        ingevoerd2 += i;
                        invoer2 = Integer.parseInt(ingevoerd2);
                        text.setText("");
                        text.setText("" + invoer2);
                    }
                }
            }
        }
    }

    class CancelHandler implements ActionListener {

        public void actionPerformed(ActionEvent e) {
            if (e.getSource() == correctie) {
                invoer1 = 0;
                invoer2 = 0;
                ingevoerd1 = "";
                ingevoerd2 = "";
                operator = "";
                text.setText("");
            }
        }
    }

    class operatorHandler implements ActionListener {

        public void actionPerformed(ActionEvent e) {
            if (e.getSource() == plus) {
                operator = "+";
            }

            if (e.getSource() == min) {

                operator = "-";
            }

            if (e.getSource() == keer) {

                operator = "*";
            }

            if (e.getSource() == deel) {
                operator = "/";
            }

            if (e.getSource() == isKnop) {
                if (operator == "+") {
                    text.setText("");
                    uitvoer = invoer1 + invoer2;
                    text.setText(uitvoer + "");
                    bewaar += uitvoer;
                    invoer1 = 0;
                    invoer2 = 0;
                    uitvoer = 0;
                    ingevoerd1 = "";
                    ingevoerd2 = "";

                } else if (operator == "-") {
                    text.setText("");
                    uitvoer = invoer1 - invoer2;
                    text.setText(uitvoer + "");
                    bewaar += uitvoer;
                    invoer1 = 0;
                    invoer2 = 0;
                    uitvoer = 0;
                    ingevoerd1 = "";
                    ingevoerd2 = "";

                } else if (operator == "*") {
                    text.setText("");
                    uitvoer = invoer1 * invoer2;
                    text.setText(uitvoer + "");
                    bewaar += uitvoer;
                    invoer1 = 0;
                    invoer2 = 0;
                    uitvoer = 0;
                    ingevoerd1 = "";
                    ingevoerd2 = "";

                } else if (operator == "/") {
                    text.setText("");
                    uitvoer = invoer1 / invoer2;
                    text.setText(uitvoer + "");
                    bewaar += uitvoer;
                    invoer1 = 0;
                    invoer2 = 0;
                    uitvoer = 0;
                    ingevoerd1 = "";
                    ingevoerd2 = "";

                }
            }
        }
    }

    public static void main(String[] args) {
        Rekenmachine2 r2 = new Rekenmachine2();
    }
}
 
Je hebt invoer1 en invoer2. Stel dat je die bij elkaar opgeteld hebt. Dan staat er dus in het vakje het opgetelde getal. Als je op het moment dat je op de isKnop drukt, in invoer1 de uitvoer zet, en invoer2 leeg maakt. Volgens mij zou je er dan verder mee kunnen rekenen..
 
Zou het helpen als je de waarde van invoer1 update met de uitkomst en invoer2 inderdaad leeg maakt ?
 
hmm... nee, ik heb het geprobeerd, maar hij werkt niet. Toch edankt!

misschien nog andere ideeën??
 
niekfct heeft het goede antwoord al gegeven, op het moment dat je de uitkomst van de eerste berekening uitgerekend hebt dan wil je deze weer gebruiken voor de volgende berekening, dus moet je de uitkomst meegeven aan invoer1.

Dus niet;
Code:
invoer1 = 0

maar;
Code:
invoer1 = uitvoer

Als tip zou ik nog mee willen geven om de code die je nu hebt wat te verbeteren, de code werkt wel maar kan een stuk netter en het is nu makkelijker aan te passen dan wanneer je 10 keer zoveel code hebt.
 
:eek: hij doet het inderdaad wel.. Ik denk dat ik te veel met de code heb 'gespeeld' en het toen heb uitgeprobeerd. Nu inderdaad de code nog netter maken. Dank jullie!

Mitsie
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan