Taschenrechner

Status
Nicht offen für weitere Antworten.
R

Robin

Gast
Hallo, ich habe eine Frage: Wir haben in Informatik halbwegs ein Taschenrechner GUI erstellt bei dem auch schon einzelne Tasten funktionieren. Jetzt haben wir dazu neben dem GUI eine neue Klasse erstellt die dann alles ausrechnen soll, aber ich weiß noch nicht genau wie man dann die Klasse aus dem GUI ansprechen soll oder wie man die Strings in double-Werte umwandeln kann(jedenfalls dass der das dann verrechnen kann).

GUI:
Code:
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;

class TR_GUI
{
    protected JFrame fenster;
    protected JTextField display;
    protected Recheneinheit recheneinheit;
    
    public TR_GUI()
    {
        recheneinheit = new Recheneinheit();
        fenster = new JFrame("Taschenrechner");
        fuelleFenster();
        fenster.pack();
        fenster.setVisible(true);
        fenster.setResizable(false);
    }//Konstrukt TR_GUI
    
    public void fuelleFenster()
    {
        Container contentPane = fenster.getContentPane();
        contentPane.setLayout (new BorderLayout());
       
        //Display kommt nach oben
        display = new JTextField();
        display.setHorizontalAlignment(JTextField.RIGHT);
        contentPane.add (display, BorderLayout.NORTH);
        
        //Autorrenname und Versionsnummer werden unten angezeigt
        contentPane.add(new JLabel("Robin - Version 0.3"), BorderLayout.SOUTH);
        
        //Ziffernblock
        JPanel ziffernblock = new JPanel();
        contentPane.add(ziffernblock, BorderLayout.WEST);
        fuelleZiffernblock(ziffernblock);
        
        //Funktionsblock
        JPanel funktionsblock = new JPanel();
        contentPane.add(funktionsblock, BorderLayout.EAST);
        fuelleFunktionsblock(funktionsblock);
    }//fuelleFenster
    
    public void fuelleZiffernblock(JPanel ziffern)
    {
        ziffern.setLayout(new GridLayout(4,3));
        TastenActionListener tastenAL = new TastenActionListener();
        for(int i=1; i<10; i++)
        {    
            JButton taste = new JButton(String.valueOf(i));
            ziffern.add(taste);
            taste.addActionListener(tastenAL);
        }//for
        //Die Tasten 0 und das Komma werden einzeln eingefügt
        JButton taste0 = new JButton("0");
        ziffern.add(taste0);
        taste0.addActionListener(tastenAL);
        JButton tasteKomma = new JButton(",");
        ziffern.add(tasteKomma);
        tasteKomma.addActionListener(tastenAL);
    }//fuelleZiffernblock
    
    public void fuelleFunktionsblock(JPanel funktionen)
    {
        funktionen.setLayout(new GridLayout(4,2));
        TastenActionListener tastenAL = new TastenActionListener();
        GleichActionListener gleichAL = new GleichActionListener();
        ClearActionListener clearAL = new ClearActionListener();
        JButton plus = new JButton("+");
        plus.addActionListener(tastenAL);
        funktionen.add(plus);
        JButton gleich = new JButton("=");
        gleich.addActionListener(gleichAL);
        funktionen.add(gleich);
        JButton minus = new JButton("-");
        minus.addActionListener(tastenAL);
        funktionen.add(minus);
        JButton leer1 = new JButton("");
        funktionen.add(leer1);
        JButton mal = new JButton("*");
        mal.addActionListener(tastenAL);
        funktionen.add(mal);
        JButton leer2 = new JButton("");
        funktionen.add(leer2);
        JButton geteilt = new JButton("/");
        geteilt.addActionListener(tastenAL);
        funktionen.add(geteilt);
        JButton tasteC = new JButton("C");
        funktionen.add(tasteC);
        tasteC.addActionListener(clearAL);
    }//fuelleFunktionsblock
       
    class TastenActionListener implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            JButton taste = (JButton) e.getSource();
            display.setText(display.getText()+taste.getText());
        }//void ActionListenerTasten
    }//ActionListenerTasten
    
    class ClearActionListener implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            display.setText("");
        }//void ActionListeneerClear
    }//ActionListenerClear
    
    class GleichActionListener implements ActionListener
    {
        public void actionPerformed(ActionEvent e)
        {
            display.setText("Syntax Error");
        }//void ActionListenerGleich
    }//ActionListenerGleich
}//TR_GUI

Recheneinheit:
Code:
public class Recheneinheit
{
    public Recheneinheit()
    {
        
    }//Recheneinheit
    
    public double summeBerechnen (double x,double y)
    {
        return (x+y);
    }//int summeBerechnen
    
    public double differenzBerechnen (double x,double y)
    {
        return (x-y);
    }//int differenzBerechnen
    
    public double produktBerechnen (double x,double y)
    {
        return (x*y);
    }//int produktBerechnen
    
    public double quotientBerechnen (double x,double y)
    {
        return (x/y);
    }//int quotientBerechnen
    
    public double quadratBerechnen (double x)
    {
        return (x*x);
    }//int quadratBerechnen
}//class Recheneinheit

Am besten wäre es wenn es Möglichkeiten gäbe ohne viele neue Sachen in Java, wir haben das glaub ich schon extremst simpel für Java erstellt.
 

0x7F800000

Top Contributor
herzlichen glückwunsch, jetzt hast du eine bisher völlig leere gui-verpackung zusammengebastelt :toll:
Jetzt mach dich mal dran, die ganzen ausdrücke zu parsen (damit sollte man eigentlich anfangen...)
heisst: jetzt musst du wieder den String aus diesem Eingabefeld holen, und versuchen den soweit zu zerlegen, dass du es berechnen kannst...
wenn du auf eine folge von ziffern und punkten triffst, die nach einer zahl aussieht, dann kannst du es mit
Code:
double d;
try{
    d=Double.parseDouble(String s);
}catch(NumberFormatException e){
    
}
in ein double umwandeln

Auf alle in der Rechnung auftretenden "+","-","/ " etc. muss du halt entsprechend reagieren.
Tipp: erschtell dir irgendeine interface a la
Code:
interface Verknuepfung{
    String getSymbol();
    double berechne(double a, double b);
}
und pack dann all diese blöden verknüpfungen in ein array, ist doch eh immer dasselbe, da tippst du dir nur die finger wund...

etwa so:

Code:
Verknuepfung[] verknuepfungen=
{ 
new Verknuepfung(){ String getSymbol(){return "+";} double berechne(double a, double b){ return a+b; } },
new Verknuepfung(){ String getSymbol(){return "-";} double berechne(double a, double b){ return a-b; } },
new Verknuepfung(){ String getSymbol(){return "*";} double berechne(double a, double b){ return a*b; } },
new Verknuepfung(){ String getSymbol(){return "/";} double berechne(double a, double b){ return a/b; } }
};
ist weeesentlich praktischer, glaubs mir^^ insbesondere wenn du da später mal 50 weitere funktionen hinzufügen willst...
 
T

TheSceptic

Gast
Äh, man muss es ja nicht gleich komplizierter machen als es ist, vor allem wenn es um Aufgaben aus dem Informatikunterricht geht. o_O

Ansprechen kannst du deine Recheneinheit z.B. einfach über recheneinheit.quadratBerechnen(<deine Zahl>). Für alles andere müsste man wissen, wie der Taschenrechner funktionieren soll. Vielleicht bist du dir da selbst noch nicht im Klaren? ;)
 

0x7F800000

Top Contributor
TheSceptic hat gesagt.:
Äh, man muss es ja nicht gleich komplizierter machen als es ist, vor allem wenn es um Aufgaben aus dem Informatikunterricht geht. o_O
was fandest du denn an der GUI des Robins so kompliziert^^ :autsch:

Ansprechen kannst du deine Recheneinheit z.B. einfach über recheneinheit.quadratBerechnen(<deine Zahl>)
ja, und wie entscheidet man jetzt welche funktion aufgerufen wird, ohne den eingetippten ausdruck geparst zu haben? raten? oder soll man einfach bei jedem beliebigen symbol die "quadratBerechnen" funktion aufrufen?


edit:
bzw. ich weiss nicht ob der kollege TheSceptic durchgelesen hat worums da geht:

Code:
display.setText(display.getText()+taste.getText());
der will da schon lange ausdrücke auf dem display stehen haben, das ist kein taschenrechner der nur eine einzige zahl anzeigt
 
R

Robin

Gast
Ja, bei uns in Info ist das halt chaotisch und man lernt kaum was :D Das meiste sollen wir ja nur in der Javadoc nachlesen aber als blutiger Anfänger hat man da meistens keine Ahnung.
Also das meiste im Code hat der Lehrer ungefähr schon vorgegeben (ich weiß nicht ob er selbst genau weiß worauf er hinaus will).

Jedenfalls sollen wir als Hausaufgabe irgendwie mit einem void aus dem string/den strings ints bzw doubles machen und die an Recheneinheit weiterleiten. Hab selber kaum eine Ahnung, es läuft wohl darauf aus dass die Recheneinheit nach ein paar Infostunden mehr den ganzen Term auseinander heddern soll.
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
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
Y Taschenrechner programmieren Java Basics - Anfänger-Themen 3
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
M Java Taschenrechner Programmieren Java Basics - Anfänger-Themen 12
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
A Taschenrechner programmieren Java Basics - Anfänger-Themen 21
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
A Taschenrechner programmieren Java Basics - Anfänger-Themen 5
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
Z Taschenrechner programmieren Java Basics - Anfänger-Themen 5
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
J Grafischen Taschenrechner programmieren - Frage dazu Java Basics - Anfänger-Themen 12
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
J Taschenrechner Java Basics - Anfänger-Themen 9
M While bei einem Taschenrechner Java Basics - Anfänger-Themen 5

Ähnliche Java Themen

Neue Themen


Oben