Taschenrechner JavaFX

melaniemueller

Aktives Mitglied
Guten Abend zusammen,
ich benötige eben einen Denkanstoß bei meinem Taschenrechner Problem...
Der Taschenrechner soll so aussehen, dass jede Zahl ein Button ist, sowie auch +,-,/,* und =. Die geklickten Zahlen und Operatoren sollen in einem Feld angezeigt werden. Im selben Feld soll dann auch das Ergebnis stehen. Also man tippt z.B. auf die 5 und diese wird angezeigt, dann plus 3 und dann steht dort "5+3" wenn man nun "=" klickt erlischt die Eingabe und das Ergebnis erscheint im selben Label. Ich hab nun die Oberfläche im SceneBuilder erstellt und mit dem Controller begonnen, aber ich weiß nicht wie ich die Eingabe über die Buttons handhaben soll.
Ich war so weit, dass ich ein ActionEvent erstelle und nach einem Klick auf den Button ganz einfach mit setText die Zahl ins Label bekomme, aber dann brauch ich ja auch noch eine Methode die die Rechnung durchführt und die weiß welche Aufgabe denn nun gestellt wurde. Finde für die Rechnung nicht den richtigen Anfang, wer kann mir helfen?
 

KonradN

Super-Moderator
Mitarbeiter
Also der Ansatz, mit der GUI zu starten, ist meist nicht so gut. Aber das will ich nicht vertiefen.

Ich weiss nicht, wie Du das generell haben willst - das was Du bisher geschrieben hast, klang so, dass Du eine einfache Texteingabe haben willst und Du dann irgendwann bei dem "=" Knopf den Ausdruck auswerten willst.

Und da musst Du Dir dann überlegen, wie der Ausdruck aussehen kann. Du kannst einen Ausdruck zerlegen und z.B. in eine Baumstrucktur überführen.

Dabei gehst Du immer von links nach rechts durch den Ausdruck und dabei behandelst Du immer zuerst die unterste Priorität.

Nehmen wir einfach einmal nur die Punkt- und Strickrechnung an als erlaubte Operatoren.

Beispiel: 5 + 2 * 3 + 7

Die Unterste Priorität hat die Strichrechnungrechnung. Du gehst also hin und suchst von links nach der ersten Strichrechnung und bekommst dann einen Knoten Addition mit links "5" und rechts "3*4+7".

Und das ist dann ein Rekursiver Aufruf - für den Linken Teilbaum hat man direkt einen Zahlenknoten "5"

Rechts hat man das 2 * 3 + 7 - also wieder Strichrechnung zuerst auflösen:
2*3 und 7 hat man dann als Teilbäume.

Bei 2*3 hat man keine Strichrechnung. Also schaut man nach eine Punktrechnung und hat dann diesen Knoten.

Man hat also einen Baum wo erst ein + Knoten kommt, links dann 5 und rechts dann wieder ein + Knoten mit links der Multiplikation und rechts der 7. Also in "Funktionsschreibweise" etwas wie
add(5, add(multiply(2,3), 7))

Jeder Knoten hat eine Methode getValue oder calculate oder so. Und die kannst Du dann aufrufen.
calculate bei einem + Knoten ist ein links.calculate() + rechts.calculate(). Ebenso - * und /.
calculate bei einem Zahlenknoten gibt direkt die Zahl raus.

Das wäre ein einfacher Weg um so einen Ausdruck zu bearbeiten.
 

Tomar

Neues Mitglied
Hallo,

Taschenrechner hört sich erst einmal einfach an, ist es aber nicht unbedingt. Du suchst nach einem Expression Evaluator oder Parser. Nachfolgen ein paar Links zum Einlesen und Ausprobieren:


Du wirst bei der Umsetzung ganz schnell auf die Ungenauigkeit von Fließkommazahlen stoßen. Z.B.: 0.1 + 0.2 = 0.30000000000000004. Lustig wird es, wenn Winkelfunktionen ins Spiel kommen. Ich habe mit pdparsii gute Erfahrungen gemacht, da dieser mit BigDecimal arbeitet.

Gruß
T.
 

Robert Zenz

Top Contributor
Hey, wenn wir hier schon Werbung fuer sowas machen, muss ich natuerlich auch EvalEx vorschlagen.



Wie schon @KonradN gemeint hat, ist die Frage wie du den Zustand von deinem Taschenrechner halten willst. Im simpelsten Fall haettest du im Controller einfach drei Felder, "Parameter1", "Parameter2" und "Operation". Das bedeutet du hast dann quasi eine Zustandsmaschine welche zuerst "Parameter1" befuellt, denn die "Operation" und dann wird "Parameter2" befuellt. Wenn dann "=" gedrueckt wird, rechnest du das eben simpelst aus. Um den aktuellen Zustand anzuzeigen haengst du einfach die drei Felder aneinander.

Der andere Ansatz waere dass du einfach den "Text" in dein Eingabefeld schreibst (oder im Controller sammelst) und dann versuchst diesen auszuwerten. Je nachdem was genau du willst sind beides eben unterschiedliche Ansaetze.

Bei ersterem kannst du leichter auf Fehler reagieren, weil du bereits beim druecken der Taste validieren kannst. Auszerdem musst du nie einen Ausdruck zerlegen oder verarbeiten koennen, weil du hast nur zwei Parameter. Bei zweitem ist der Benutzer nicht daran gebunden dass du alles implementierst, es muss einfach nur ein gueltiger Ausdruck eingeben worden sein. Auszerdem koennte man dann einfach direkt in das Eingabefeld eingeben, aber ich glaube das ist jetzt fuer die Uebung dann nicht relevant. Aber dabei muss man eben den Ausdruck korrekt auswerten.

Wenn du einen eigenen Parser implementieren willst fuer die Ausdruecke, waere das der Shunting Yard Algorithm. Ohne Sonderfaelle ist der auch recht schnell heruntergetippt und getestet, aber ist eben eine etwas andere Baustelle als da jetzt so einen kleinen Taschenrechner zu machen.
 
G

Gelöschtes Mitglied 76266

Gast
@melaniemueller
Wenn Du einen JavaFX Scientific Calculator haben willst, sag mir Bescheid. Problem is nur, dass es keine Dokumentation gibt, sondern nur 26 JFX sources + 1 CSS file
 

Anhänge

  • Calculator.jpg
    Calculator.jpg
    20,3 KB · Aufrufe: 4
Ähnliche Java Themen
  Titel Forum Antworten Datum
melaniemueller JavaFX Taschenrechner mit SceneBuilder AWT, Swing, JavaFX & SWT 12
L JavaFX javafx.fxml.LoadException bei einem Taschenrechner AWT, Swing, JavaFX & SWT 5
O JavaFX mini Taschenrechner! AWT, Swing, JavaFX & SWT 35
A JavaFX Sehr viele Exceptions bei Taschenrechner mit JavaFx AWT, Swing, JavaFX & SWT 2
Exelsior JavaFX Taschenrechner mit FX AWT, Swing, JavaFX & SWT 6
N JavaFX Einfacher Taschenrechner mit Scene Builder und Java FX AWT, Swing, JavaFX & SWT 0
thor_norsk Taschenrechner AWT, Swing, JavaFX & SWT 8
K JavaFX Taschenrechner textField auf 10stellen begrenzen AWT, Swing, JavaFX & SWT 26
N Swing Taschenrechner GUI AWT, Swing, JavaFX & SWT 13
B Probleme Action Listener Taschenrechner AWT, Swing, JavaFX & SWT 27
N Taschenrechner mit mehreren Rechnungen AWT, Swing, JavaFX & SWT 18
K Taschenrechner mit GUI AWT, Swing, JavaFX & SWT 2
L Event Handling Gui für Taschenrechner AWT, Swing, JavaFX & SWT 27
H Swing Taschenrechner GUI AWT, Swing, JavaFX & SWT 5
M Taschenrechner AWT, Swing, JavaFX & SWT 21
T Swing Taschenrechner AWT, Swing, JavaFX & SWT 2
M AWT Java-Taschenrechner, wie Stack richtig verwenden? AWT, Swing, JavaFX & SWT 14
C Grafik Taschenrechner AWT, Swing, JavaFX & SWT 5
H Taschenrechner Coding Erklärung AWT, Swing, JavaFX & SWT 2
Jats Hilfe bei FocusListener für Taschenrechner AWT, Swing, JavaFX & SWT 4
B Taschenrechner mit ComboBox AWT, Swing, JavaFX & SWT 7
S AWT Probleme mit Taschenrechner AWT, Swing, JavaFX & SWT 9
V Bitte um Hilfe bei nem Taschenrechner AWT, Swing, JavaFX & SWT 8
C Taschenrechner in Java AWT, Swing, JavaFX & SWT 7
M MouseEvent JButton Taschenrechner AWT, Swing, JavaFX & SWT 5
K Java-Taschenrechner AWT, Swing, JavaFX & SWT 1
L Taschenrechner mit Klammern AWT, Swing, JavaFX & SWT 11
H Taschenrechner AWT, Swing, JavaFX & SWT 5
G Taschenrechner-Problem AWT, Swing, JavaFX & SWT 2
Juelin starten maven javafx programm ohne netbeans AWT, Swing, JavaFX & SWT 24
Juelin javax.swing in javafx AWT, Swing, JavaFX & SWT 1
MiMa JUnit5 im JavaFX Projekt AWT, Swing, JavaFX & SWT 2
Juelin in javafx Event auslösen AWT, Swing, JavaFX & SWT 4
MiMa Fonts, Icons, Bilder in JavaFX Anwendung AWT, Swing, JavaFX & SWT 5
MiMa SwingFXUtils in JavaFX 20 AWT, Swing, JavaFX & SWT 6
MiMa JavaFX Fenstertitel zu klein. AWT, Swing, JavaFX & SWT 1
MiMa JavaFX JAR unter Windows ausführen schlägt fehl? AWT, Swing, JavaFX & SWT 5
I JavaFX JavaFx-Anwendung für die Erstellung einer Windows-Anwendung? AWT, Swing, JavaFX & SWT 6
Hatsi09 Javafx MediaPlayer spielt nicht immer AWT, Swing, JavaFX & SWT 3
Hatsi09 Javafx Neuladen von ImageView und MediaView AWT, Swing, JavaFX & SWT 3
Maxim6394 JavaFX Umlaute in JavaFX GUI AWT, Swing, JavaFX & SWT 12
Maxim6394 JavaFX Scene Builder - Crash bei eigener Komponente AWT, Swing, JavaFX & SWT 2
Ernesto95 JavaFX JavaFX GUI mit sehr vielen Update requests AWT, Swing, JavaFX & SWT 4
Telisti Javafx Image wird nicht richtig integiert AWT, Swing, JavaFX & SWT 8
J Netbeans die JavaFX-Anwendung wird nicht ausgeführt AWT, Swing, JavaFX & SWT 16
MartinNeuerlich Kann mir jemand, der einen Mac mit einem m1 oder m2-Chip hat, eine POM geben mit der Javafx-Fullscreen beim Mac mit m-Chip funktioniert? AWT, Swing, JavaFX & SWT 1
tommybalbor JavaFx Anwendung klappt nicht für macOs Nutzern, wenn ich zwei dependecies bei maven hinzufüge AWT, Swing, JavaFX & SWT 6
JavaSchmecktLecker JavaFX JavaFX Ordner automatisch verlinken AWT, Swing, JavaFX & SWT 2
R auto. Importanweisungen für javafx funktioniert in Eclipse nicht mehr AWT, Swing, JavaFX & SWT 4
thor_norsk JavaFX Anwendung stürzt ab AWT, Swing, JavaFX & SWT 4
berserkerdq2 Skalieren sich javafx objekte automatisch auf die Bildschirmgröße AWT, Swing, JavaFX & SWT 6
berserkerdq2 Wie füge ich ein Bild in javafx mit dem Scenebuilder ein, das automatisch mitgezogen wird, wenn das Fenster vergrößert wird oder Vollbildmodus AWT, Swing, JavaFX & SWT 6
B Java Projekt mit JavaFX und jfoenix ausführbar machen AWT, Swing, JavaFX & SWT 46
H JavaFX wie JavaFX Projekt aufsetzen? AWT, Swing, JavaFX & SWT 10
thor_norsk JavaFX - Grafikkarte AWT, Swing, JavaFX & SWT 7
MiHimbert Rückmeldung an den aufrufenden JAVAFX-Dialog AWT, Swing, JavaFX & SWT 1
MiMa JavaFX Runtime components are Missing??? AWT, Swing, JavaFX & SWT 3
J JavaFx PDF in einem Element in einem Fenster anzeigen. AWT, Swing, JavaFX & SWT 11
B JavaFX Sprachumschaltung mit Button auf der HMI AWT, Swing, JavaFX & SWT 6
H JavaFX Fehlende JavaFX Package AWT, Swing, JavaFX & SWT 10
K JavaFX unterschiedliche (mehrere Fenster) in seperater Main Methode AWT, Swing, JavaFX & SWT 26
_user_q Kann man ein 2. JavaFX-Fenster auch beenden (exit) statt schließen (close) lassen? AWT, Swing, JavaFX & SWT 8
G JavaFX Line Chart mit Farbverlauf/Gradient in Linie AWT, Swing, JavaFX & SWT 1
thor_norsk JavaFX, FXML und SceneBuilder AWT, Swing, JavaFX & SWT 6
_user_q Über installDist exportiertes Programm wirft "Unsupported JavaFX configuration" AWT, Swing, JavaFX & SWT 0
CodingBerlin JavaFX Programm läuft nur unter Eclipse AWT, Swing, JavaFX & SWT 1
H Fehler: Zum Ausführen dieser Anwendung benötigte JavaFX-Runtime-Komponenten fehlen AWT, Swing, JavaFX & SWT 44
temi JavaFX "Frames" in JavaFx - passende Komponente? AWT, Swing, JavaFX & SWT 13
G JavaFX Steuerung bzw. Test von externer JavaFX Anwendung (liegt nur als jar vor) AWT, Swing, JavaFX & SWT 9
_user_q [JavaFX] Spinner so einstellen, dass er nicht leer bleiben darf? AWT, Swing, JavaFX & SWT 6
S Javafx getResource-Pfad wird nicht erkannt AWT, Swing, JavaFX & SWT 7
A JavaFX exportierte Jar ohne beim starten die Libs hinzufügen? AWT, Swing, JavaFX & SWT 2
J JavaFX Schiffe versenken mit JavaFX und Scene builder AWT, Swing, JavaFX & SWT 3
Encera ArrayList mit eigenen Objekten in JavaFX sortieren und ausgeben AWT, Swing, JavaFX & SWT 50
L JavaFx Textformatierung mittels Datenbank und Funktion anpassen AWT, Swing, JavaFX & SWT 5
sserio Wie funktioniert ein Controller bei JavaFx? AWT, Swing, JavaFX & SWT 1
sserio Kann man bei JavaFx ein Fenster aufkommen lassen? AWT, Swing, JavaFX & SWT 1
Jose05 JavaFx Fxml: GUI aus einer anderen Klasse starten AWT, Swing, JavaFX & SWT 1
Tassos JavaFX/Problem mit der Maussteuerung in Stackpane AWT, Swing, JavaFX & SWT 7
S Ich bringe Code mit JavaFX unter Apache NetBeans IDE 12.6 nicht zum laufen. AWT, Swing, JavaFX & SWT 14
K Bekomme (u.a) javafx.fxml.LoadException trotz "korrektem" Code AWT, Swing, JavaFX & SWT 8
S JavaFX: voneinander abhängige TextFields AWT, Swing, JavaFX & SWT 33
M Gluon will JavaFX in den Browser stecken AWT, Swing, JavaFX & SWT 0
H javafx application does not exist AWT, Swing, JavaFX & SWT 16
A JavaFX Controller Problem AWT, Swing, JavaFX & SWT 1
izoards JavaFX TableView mit Array Inhalt füllen AWT, Swing, JavaFX & SWT 1
M Javafx versuch Bibliothek zu erstellen AWT, Swing, JavaFX & SWT 0
N JavaFX Javafx intelij Projekt zu ausführbaren jar Datei Machen AWT, Swing, JavaFX & SWT 1
K JavaFx, Sound Aufnahme und Thread AWT, Swing, JavaFX & SWT 0
izoards JavaFX TextFlow - Sonderzeichen AWT, Swing, JavaFX & SWT 1
maximstein JavaFX WebView - java.lang.NoSuchMethodError: 'boolean com.sun.prism.ResourceFactory.isDisposed()' AWT, Swing, JavaFX & SWT 4
N JavaFX Unicode zeichnen in javafx Label verwenden AWT, Swing, JavaFX & SWT 2
MiHimbert javaFX openfx (17) datepicker AWT, Swing, JavaFX & SWT 3
A Mit JavaFX einzelne Zeilen in TableView farbig markieren AWT, Swing, JavaFX & SWT 5
Jose05 Javafx Label Höhe=Breite AWT, Swing, JavaFX & SWT 1
Jose05 JavaFX: eigene FXML-Datei für einen Button AWT, Swing, JavaFX & SWT 3
izoards JavaFX editierbare Tabelle AWT, Swing, JavaFX & SWT 4
N javafx Position der Bustaben finden label AWT, Swing, JavaFX & SWT 1
D Verschieden Scenen ansprechen mit dem Scene Builder und JavaFX (Eclipse) AWT, Swing, JavaFX & SWT 16
izoards JavaFX Background Task warten auf Knopfdruck AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben