Taschenrechner programmieren

Status
Nicht offen für weitere Antworten.

Alenka87

Mitglied
Hallo, ich sitze grad an einem Taschenrechner, der mich noch grau werden lässt



Java:
... 
            button1.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event){
                feld.setText(feld.getText() +"1");
              
                }});

        button2.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event){
                feld.setText(feld.getText() +"2");
                
                }});

        button3.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event){
                feld.setText(feld.getText() +"3");
                
                }});...


Java:
...plus.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event){
                textfeld[0] = feld.getText();
                operator = PLUS;
                intwert[0] = Double.parseDouble(feld.getText());
                textfeld[0] = null;
                
                }});...

Java:
...istGleich.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent gleich){
                textfeld[1] = feld.getText();
                intwert[1] = Double.parseDouble(textfeld[1]);

                switch(operator){
                    case PLUS:      double h = intwert[0] + intwert[1];
                                    intwert[2] = h;
                                    feld.setText(intwert[2] + "");break;

                    case MINUS:     double b = intwert[0] - intwert[1];
                                    intwert[2] = b;
                                    feld.setText(intwert[2] + "");break;...


Das Problem ist nun, dass nach dem Klick auf eine Operationstaste, zum Bsp. "Plus" die Zahlen weiter im Feld bleiben und noch größer werden.

Wenn ich verusch "12+11 = 23" zu rechnen, kommt raus "12+1211 = 1223"

Wenn ich die Zeile
Java:
feld.setText(feld.getText() +"3");

ersetze durch:
Java:
feld.setText("3");
, kann ich keine mehrstellige Zahlen eintippen.

Hat jemand ein Tip für mich, wie ich das Problem angehen kann?
 

Alenka87

Mitglied
das habe ich mir auch überlegt, aber ich würde es doch gerne vermeiden, wenn's geht.

Dieses taschenrechner ist eine studienarbeit im Informatikstudium und der Prof hat gemeint, dass wir uns an dem Windows-Taschenrechner orientieren sollen, wenn wir eine gute Noten habn wollen.;(

Und bei Windows-Taschenrechner verschwindet die vorherige Zahl nicht.

Irgendwie muss es ja gehen, nur stehe ich grad auf der Leitung???:L
 

faetzminator

Gesperrter Benutzer
nunja, sie verschwindet nach Eingabe einer Ziffer nach einem Steuerzeichen. also am besten das Steuerzeichen welches eingegen wurde merken, irgendeinen boolean auf true setzen, bei Eingabe einer Ziffer den boolean überprüfen, und alle bis auf das neuste löschen (wenn true), den boolean auf false setzen und nach Eingabe eines erneuten Steuerzeichens die Berechnung machen, sofern mindestens eine Ziffer eingegeben wurde, ansonsten einfach dieses merken, wieder boolean setzen etc.
 

Alenka87

Mitglied
ok.... ich bin nicht so gut in java... klingt zwar logisch, aber ich glaub ich brauch noch a weng um es ganz zu verstehen und auch zu programmieren, danke trotzdem!

(wäre es unfair wenn ich dich bitten würde, den Quellcode abzutippen wie so was aussieht?)
 

faetzminator

Gesperrter Benutzer
ein bisschen Metacode:
Code:
char c;
double sum;
boolean wasControlChar;
char controlChar;
while ((c = readChar()) != 0) { // irgendwie den letzt eingegeben char holen
    if (isControlChar(c)) { // irgend ne methode bauen, welche überprüft, was es ist (ob es +, -, .. ist)
        wasControlChar = true;
        sum = calculate(sum, getAcutalText(), controlChar); // irgendwie berechnen und in sum speichern, evtl auch gleich anzeigen
        controlChar = c;
    } else if (wasControlChar) {
        wasControlChar = false;
        setActualText("" + c); // nur noch die neue Ziffer stehen lassen
    }
}
irgendwie so was...
 

Alenka87

Mitglied
Hallo, also ich sitze immer noch an dem Taschenrechner.

Und je weiter ich komme, desto mehr probleme gibt es. Vielleicht kann mir hier jemand helfen.

1) Ich muss hier objektorientiert programmieren und dabei das Programm aufteilen: Klasse in der das Aussehen programmiert wird und Klasse in der alle Funktionalitäten sind.

Ich kann es jetzt noch nicht ganz verstehen und habe es so gut gemacht, wie ich es konnte.

2) Die Methode in der Zeile 181
private int rechnung(String[] a, double[] b,JButton button, int c)
funktioniert nicht.
Sie soll bestimmen was passier - plus, minus, mal, durch.
Und dann soll beim Button "gleich" Zeile 155 bestimmt werden welche methode aufgerufen wird.

ich weiss nicht woran das liegt, oder ich gehe das problem falsch an. Kann mir jemand ein Tip geben?

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


public class rechner extends taschenrechner{
        taschenrechner meins = new taschenrechner();
        int operator ;
        rechner(){
            
        //Arrays für Strings und Double-Werte
        //Zahlen werden aus dem Textfeld als Strings gespeichert
        //Dann Double.parseDouble    
        final String[] textfeld = new String[4];
        final double[] intwert = new double[4];
        
      
        //LAYOUTMANAGER
        Pane.setLayout(new BorderLayout(4,2));
        mitte.setLayout(new GridLayout(4,3));
        rechts.setLayout(new GridLayout(4,3));
        oben.setLayout(new FlowLayout());
        Pane.add(mitte, BorderLayout.CENTER);
        Pane.add(oben, BorderLayout.PAGE_START);
        Pane.add(rechts, BorderLayout.LINE_END);


        //Ziffertasten und zwei weitere werden in der Mitte platziert
        mitte.add(button7); mitte.add(button8); mitte.add(button9);
        mitte.add(button4); mitte.add(button5); mitte.add(button6);
        mitte.add(button1); mitte.add(button2); mitte.add(button3);
        mitte.add(button0); mitte.add(vorzeichen); mitte.add(komma);

        //Aussehen des oberen Bereichs
        oben.add(feld);            oben.add(ce);

        //Aussehen des rechten Bereichs
        rechts.add(dividieren);         rechts.add(hoch2);
        rechts.add(hoch3);              rechts.add(multiplizieren);
        rechts.add(prozent);            rechts.add(prozent);
        rechts.add(xhochy);             rechts.add(minus);
        rechts.add(einsdurch);          rechts.add(plus);
        rechts.add(wurzel);             rechts.add(fakult);
        rechts.add(gleich);

        setLocation(500, 500);
        setTitle("Taschenrechner");
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        pack();

        //TextFeld wird geleert
        ce.addActionListener(new ActionListener()                          
        {
            public void actionPerformed(ActionEvent event)
            {
               feld.setText("");}});


        //BUTTON 1
        button1.addActionListener(new ActionListener()                          
        {
            public void actionPerformed(ActionEvent event)
            {
               einlesen(button1);}});

        //BUTTON 2
        button2.addActionListener(new ActionListener()                          
        {
            public void actionPerformed(ActionEvent event)
            {
                einlesen(button2);}});

        //BUTTON 3
        button3.addActionListener(new ActionListener()                          
        {
            public void actionPerformed(ActionEvent event)
            {
                einlesen(button3);}});

        //BUTOON 4
        button4.addActionListener(new ActionListener()                          
        {
            public void actionPerformed(ActionEvent event)
            {
                einlesen(button4);}});

        //BUTTON 5    
        button5.addActionListener(new ActionListener()                          
        {
            public void actionPerformed(ActionEvent event)
            {
                einlesen(button5);}});

        // BUTTON 6
        button6.addActionListener(new ActionListener()                          
        {
            public void actionPerformed(ActionEvent event)
            {
                einlesen(button6);}});

        //BUTTON 7
        button7.addActionListener(new ActionListener()                         
        {
            public void actionPerformed(ActionEvent event)
            {
                einlesen(button7);}});

        //BUTTON 8
        button8.addActionListener(new ActionListener()                         
        {
            public void actionPerformed(ActionEvent event)
            {
                einlesen(button8);}});

        //BUTTON 9
        button9.addActionListener(new ActionListener()                          
        {
            public void actionPerformed(ActionEvent event)
            {
                einlesen(button9);}});

        //BUTTON 0            
        button0.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                einlesen(button0);}});
        
        //BUTTON PLUS        
        plus.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                rechnung(textfeld, intwert, plus, operator);}});

       //BUTTON MINUS
       minus.addActionListener(new ActionListener()
       {
            public void actionPerformed(ActionEvent event)
            {
                rechnung(textfeld, intwert, plus, operator);}});
       
       // BUTTON  MULTIPLIZIEREN         
       multiplizieren.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event){
                rechnung(textfeld, intwert, plus, operator);
            }});
            
       // BUTTON  DIVIDIEREN         
       dividieren.addActionListener(new ActionListener(){
            public void actionPerformed(ActionEvent event){
                rechnung(textfeld, intwert, plus, operator);
            }});

        //BUTTON IST-GLEICH
        gleich.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                switch(operator)
                {
                    case 0:addiere(textfeld, intwert); break;
                    case 1:subtr(textfeld, intwert); break;
                    case 2:mult(textfeld, intwert); break;
                    case 3:divid(textfeld, intwert); break;
                }
                }
            }
        );

        }

        //METHODE FUER BUTTONS 1, 2, 3, 4, 5, 6, 7, 8, 9, 0
        private void einlesen(JButton button)
        {                                  
           feld.setText(feld.getText() + button.getText());
        }  
        
        //Methode für die OperationsButtons: 1.Zahl wird gespeichert, 
        //und der Operator wird bestimmt
        private int rechnung(String[] a, double[] b,JButton button, int c)
        {      
            a[0] = feld.getText();
            b[0] = Double.parseDouble(a[0]);
            String x;
            x = button.getText();

            if(x.equals("+"))
            {
                c = 0;
            }
            
            else 
            {
                if (x.equals("-"))
                {
                    c = 1;
                }
                else
                {
                    if (x.equals("*"))
                    {
                        c = 2;
                    }
                    else
                    {
                        if (x.equals("/"))
                        {
                          c = 3;
                        }
                    }
                }
            }
            feld.setText("");
            return c;
        }
        // METHODE ZUM ADDIEREN
        private double addiere(String[] a, double[] b){
            a[1] = feld.getText();
            b[1] = Double.parseDouble(a[1]);
            b[2] = b[0] + b[1];
            feld.setText(b[2]+"");
            return b[2];
        }
        // METHODE ZUM SUBTRAHIEREN
        private double subtr(String[] a, double[] b){
            a[1] = feld.getText();
            b[1] = Double.parseDouble(a[1]);
            b[2] = b[0] - b[1];
            feld.setText(b[2]+"");
            return b[2];
        }
        // METHODE ZUM MULTIPLIZIEREN
        private double mult(String[] a, double[] b){
            a[1] = feld.getText();
            b[1] = Double.parseDouble(a[1]);
            b[2] = b[0] * b[1];
            feld.setText(b[2]+"");
            return b[2];
        }
        // METHODE ZUM DIVIDIEREN
        private double divid(String[] a, double[] b){
            a[1] = feld.getText();
            b[1] = Double.parseDouble(a[1]);
            b[2] = b[0] / b[1];
            feld.setText(b[2]+"");
            return b[2];
        }
        
        public static void main(String[] args)
        {
            rechner myFrame = new rechner();
            myFrame.setVisible(true);
        }
}
        
class taschenrechner extends JFrame 
{

   Container Pane = getContentPane();

    JPanel oben = new JPanel(); //Panel wo Textfeld und CE-Taste liegen
    JPanel mitte = new JPanel(); //Panel für Ziffer-Buttons und "+/-" und ","
    JPanel rechts = new JPanel(); //Panel für den Rest(+, -, *, /, =, %, usw)

    //Ziffer-Buttons
     JButton button1 = new JButton("1");
     JButton button2 = new JButton("2");
     JButton button3 = new JButton("3");
     JButton button4 = new JButton("4");
     JButton button5 = new JButton("5");
     JButton button6 = new JButton("6");
     JButton button7 = new JButton("7");
     JButton button8 = new JButton("8");
     JButton button9 = new JButton("9");
     JButton button0 = new JButton("0");

    //Funktionstasten
     JButton ce = new JButton("CE");
     JButton plus = new JButton("+");
     JButton gleich = new JButton("=");
     JButton minus = new JButton("-");
     JButton multiplizieren = new JButton("*");
     JButton dividieren = new JButton("/");
     JButton hoch2 = new JButton("x²");
     JButton hoch3 = new JButton("x³");
     JButton prozent = new JButton("%");
     JButton einsdurch = new JButton("1/x");
     JButton wurzel = new JButton("√");
     JButton xhochy = new JButton("x^y");
     JButton fakult = new JButton ("n!");
     JButton vorzeichen = new JButton("+/-");
     JButton komma = new JButton(",");
     //Textfeld
     JTextField feld = new JTextField(" ", 20);
}
 

Spin

Top Contributor
Hi, schon mal überlegt, wie dein ActionListener nach dem Drücken des = Zeichens reagieren soll?

Also:

Java:
gleich.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent event)
            {
                switch(operator)
                {
                    case 0:addiere(textfeld, intwert); break;
                    case 1:subtr(textfeld, intwert); break;
                    case 2:mult(textfeld, intwert); break;
                    case 3:divid(textfeld, intwert); break;
                }
                }
            }
        );
 
        }

Es freut mich, dass du hier den ActionListener als Adapter implementiert hast:)
PS: ( Besser ist es ein MouseClicked Event zu nehmen, da du mit einen ActionListener 3 MouseEvents zu gleich benutzt und es somit performance lastig wird :) )

Ok.
Deine Methode erwartet einen operator, der standartmäßig 0 initialisiert ist.
Du hast dich bestimmt schon gefragt, warum du immer nur PLUS rechnen kannst. Mhh, es liegt daran, dass die Methode immer nur 0 bekommt.

Nun liegt es an dir , wie man es ändert. Eine funktion muss die andere aufrufen.;)

Bei Fragen helfe ich gerne weiter :)
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Y Taschenrechner programmieren Java Basics - Anfänger-Themen 3
M Java Taschenrechner Programmieren Java Basics - Anfänger-Themen 12
A Taschenrechner programmieren Java Basics - Anfänger-Themen 21
A Taschenrechner programmieren Java Basics - Anfänger-Themen 5
Z Taschenrechner programmieren Java Basics - Anfänger-Themen 5
J Grafischen Taschenrechner programmieren - Frage dazu Java Basics - Anfänger-Themen 12
S Taschenrechner programmieren und habe null Ahnung Java Basics - Anfänger-Themen 22
V Taschenrechner programmieren Java Basics - Anfänger-Themen 4
N Java Taschenrechner hat Jemand vlt einen Tipp dafür wie ich jetzt die buttons verbinden kann und das Ergebnis auf dem textfield anzeigen lassen kann Java Basics - Anfänger-Themen 13
L Taschenrechner Problem Java Basics - Anfänger-Themen 4
J Frage zu einem "Taschenrechner" code Java Basics - Anfänger-Themen 9
R Operatoren Rechenoperation verwenden für Taschenrechner. Java Basics - Anfänger-Themen 32
S while Schleife Taschenrechner Java Basics - Anfänger-Themen 1
J Taschenrechner mit mehr als 2 Zahlen. Java Basics - Anfänger-Themen 18
R Einfacher Taschenrechner mit Eclipse Java Basics - Anfänger-Themen 3
M Einfacher Taschenrechner Java Basics - Anfänger-Themen 2
Fiedelbambu Prüfen von Komma stelle beim Taschenrechner Java Basics - Anfänger-Themen 5
JordenJost Taschenrechner problem Java Basics - Anfänger-Themen 5
G Taschenrechner ergibt Fehler in if-Abfrage Java Basics - Anfänger-Themen 6
K Erste Schritte "Taschenrechner" zeigt keine Komma Zahlen an. Java Basics - Anfänger-Themen 8
C Potenzberechnung über switch case. Taschenrechner mit Eingabe über einen grafischen Dialog Java Basics - Anfänger-Themen 22
E JavaFX Taschenrechner Eingabe im Textfield beschränken Java Basics - Anfänger-Themen 2
E Taschenrechner GUI Problem mit Fehlerhandling Java Basics - Anfänger-Themen 6
C Taschenrechner (switch) in Taschenrechner mit Methoden umwandeln Java Basics - Anfänger-Themen 115
W Taschenrechner mit Switch case Java Basics - Anfänger-Themen 4
W Taschenrechner Java Basics - Anfänger-Themen 11
A Taschenrechner mit Gui erstellen Java Basics - Anfänger-Themen 9
2 Taschenrechner mit GUI Problem bei der Berechnung Java Basics - Anfänger-Themen 8
P Taschenrechner mit unendlich vielen Eingabemöglichkeiten Java Basics - Anfänger-Themen 1
V Erste Schritte Taschenrechner mit beliebig vielen Zahlen Java Basics - Anfänger-Themen 5
S Taschenrechner Java Basics - Anfänger-Themen 13
P Taschenrechner Text übertragung Java Basics - Anfänger-Themen 3
S Compiler-Fehler Basic- Taschenrechner/ Fehler Java Basics - Anfänger-Themen 8
S Basic- Taschenrechner? Java Basics - Anfänger-Themen 7
P Hilfe bei Java Taschenrechner Java Basics - Anfänger-Themen 25
F Erste Schritte Frage zu simplem Taschenrechner(switch) Java Basics - Anfänger-Themen 16
L Mein Taschenrechner lässt sich plötzlich nicht mehr öffnen Java Basics - Anfänger-Themen 5
S Taschenrechner hilfe! Java Basics - Anfänger-Themen 17
H Java Taschenrechner Java Basics - Anfänger-Themen 4
R Variablen Taschenrechner mit Komfortfunktionen Java Basics - Anfänger-Themen 2
J RPN Taschenrechner - keine Lösung!! Java Basics - Anfänger-Themen 84
M Java Taschenrechner (if-else) Java Basics - Anfänger-Themen 11
L Taschenrechner mit switch und while funktioniert noch nicht richtig Java Basics - Anfänger-Themen 22
Q simpler Taschenrechner Java Basics - Anfänger-Themen 34
R Taschenrechner NullPointerException Java Basics - Anfänger-Themen 1
R Variablen Weitergehenderr Taschenrechner Java Basics - Anfänger-Themen 4
F Taschenrechner "Error loading class..." Java Basics - Anfänger-Themen 5
P Erste Schritte Taschenrechner mit if-else Anweisung Java Basics - Anfänger-Themen 6
G Taschenrechner gibt nur 0.0 aus Java Basics - Anfänger-Themen 8
Z Java Taschenrechner Java Basics - Anfänger-Themen 6
J Kleiner Taschenrechner! Anfänger braucht Hilfe :( Java Basics - Anfänger-Themen 2
C Taschenrechner in Java Java Basics - Anfänger-Themen 6
J Erste Schritte Java CMD Taschenrechner mit Parametern! Java Basics - Anfänger-Themen 16
J Taschenrechner: Probleme Java Basics - Anfänger-Themen 5
E Taschenrechner problem! Ich komme nicht voran Java Basics - Anfänger-Themen 18
R Erste Schritte Taschenrechner mit Schleife Java Basics - Anfänger-Themen 24
Lord.Djerun (Taschenrechner Netbeans) Komma nur einmal schreiben & 0 ersetzen Java Basics - Anfänger-Themen 1
Z Taschenrechner - Additions/Substraktions/Multiplikations/Divionsketten! Java Basics - Anfänger-Themen 4
D Taschenrechner Frage Java Basics - Anfänger-Themen 12
Z Sehr simpler Taschenrechner - Hilfe! Java Basics - Anfänger-Themen 10
Z Taschenrechner - Wie addiere,multipliziere und subtrahiere ich? Java Basics - Anfänger-Themen 6
D kleiner Taschenrechner mit switch fehlerhaft Java Basics - Anfänger-Themen 1
K Taschenrechner im GUI Java Basics - Anfänger-Themen 2
P Taschenrechner, operatoren Java Basics - Anfänger-Themen 4
D Simpler Taschenrechner Java Basics - Anfänger-Themen 6
A Anfänger Taschenrechner Frage Java Basics - Anfänger-Themen 14
R Erste Schritte Taschenrechner - Punkt-vor-Strich Rechnung Java Basics - Anfänger-Themen 1
S Operatoren Taschenrechner Ergebnis ausgeben Java Basics - Anfänger-Themen 7
A Taschenrechner zeigt Error Java Basics - Anfänger-Themen 7
J Taschenrechner Funktion Java Basics - Anfänger-Themen 18
M Taschenrechner fertigstellung Java Basics - Anfänger-Themen 1
N Methoden Taschenrechner Java Basics - Anfänger-Themen 2
F z = input.nextChar(); PROBLEM Taschenrechner Java Basics - Anfänger-Themen 7
J Scanner Taschenrechner? Java Basics - Anfänger-Themen 7
J Variablen Rechenzeichen und Zahlen verknüpfen für einen Taschenrechner Java Basics - Anfänger-Themen 17
B Klassen Java Taschenrechner mit Klassen und Methoden Java Basics - Anfänger-Themen 12
B Erste Schritte Brauche Hilfe bei einem Java-Taschenrechner Java Basics - Anfänger-Themen 11
R Methoden Taschenrechner Java Basics - Anfänger-Themen 4
P Taschenrechner , IF-Abfrage Java Basics - Anfänger-Themen 12
I Taschenrechner - Methoden implementieren Java Basics - Anfänger-Themen 5
I Java Starthilfe (Taschenrechner) Java Basics - Anfänger-Themen 7
J Taschenrechner Problemchen Java Basics - Anfänger-Themen 3
D Erste Schritte Taschenrechner Java Basics - Anfänger-Themen 11
K taschenrechner - Fehler beim Kürzen eines Bruches finden Java Basics - Anfänger-Themen 20
J Taschenrechner Punkt vor Strich Java Basics - Anfänger-Themen 9
M Ausklappbares Fenster bei grafischem Taschenrechner Java Basics - Anfänger-Themen 2
M Dividieren bei Grafischem Taschenrechner klappt nicht Java Basics - Anfänger-Themen 2
N Taschenrechner mit Unterprogra Java Basics - Anfänger-Themen 6
C Taschenrechner Java Basics - Anfänger-Themen 12
E Erste Schritte Taschenrechner Java Basics - Anfänger-Themen 8
K Taschenrechner Java Basics - Anfänger-Themen 25
J Textfeld für Taschenrechner Java Basics - Anfänger-Themen 3
D Taschenrechner Java Basics - Anfänger-Themen 28
A Taschenrechner-GUI mit BorderLayout? Java Basics - Anfänger-Themen 6
W [PROJEKT] Simpler grafischer Taschenrechner Java Basics - Anfänger-Themen 8
M Taschenrechner mit JApplet Java Basics - Anfänger-Themen 26
W Taschenrechner Java Basics - Anfänger-Themen 2
T Tasten vom Taschenrechner? Java Basics - Anfänger-Themen 3
S Datentypen Taschenrechner Java Basics - Anfänger-Themen 13
J Taschenrechner Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben