Auswerten eines eingegeben Termes

Zitrus

Bekanntes Mitglied
Java:
package rechner;

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

public class Rechner
{
    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()
     {
        setLayout(new BorderLayout());
        setIconImage(getToolkit().getImage("img1.png"));
        setResizable(false);
        setSize(250,215);
        setTitle ("Saltuks' Rechner");
        setLocation(100,100);
        CalculatorPanel hpanel = new CalculatorPanel();
        add(hpanel);
    }
}
        
class CalculatorPanel extends JPanel implements ActionListener
{
private JTextField field;
private JPanel panel;
private String lastCommand;

     public CalculatorPanel() {
        setLayout(null);
        field = new JTextField();
        field.setBounds (10,10,225,40);
        field.setEditable(false);
        field.setVisible(true);
        
        panel = new JPanel();
        panel.setLayout(null);
        panel.setSize(300,300);
        
        
        addButton1();
        addButton2();
        addButton3();
        addButton4();
        addButton5();
        addButton6();
        addButton7();
        addButton8();
        addButton9();
        addButton10();
        addButton11();
        addButton12();
        addButton13();
        addButton14();
        addButton15();
        
        add(field, BorderLayout.NORTH);
        add(panel, BorderLayout.CENTER);
        
        
     }
     
     JButton button1 = new JButton("1");
     JButton button2 = new JButton("2");
     JButton button3 = new JButton("3");
     JButton button4 = new JButton("+");
     JButton button5 = new JButton("4");
     JButton button6 = new JButton("5");
     JButton button7 = new JButton("6");
     JButton button8 = new JButton("-");
     JButton button9 = new JButton("7");
     JButton button10 = new JButton("8");
     JButton button11 = new JButton("9");
     JButton button12 = new JButton("x");
     JButton button13 = new JButton("/");
     JButton button14 = new JButton(".");
	 JButton button15 = new JButton("=");
	 
     private void addButton1()
     {
      button1.addActionListener(this);
      button1.setBounds(10,60,45,30);
      panel.add(button1);
      setFont(new Font("Agency FB Regular", 5, 3));
     }
     
     private void addButton2()
     {
      button2.setBounds(55,60,45,30);
      button2.addActionListener(this);
      panel.add(button2);
      setFont(new Font("Arial", 5, 3));
     }
     
     private void addButton3()
     {
      button3.setBounds(100,60,45,30);
      button3.addActionListener(this);
      panel.add(button3);
      setFont(new Font("Agency FB Regular", 5, 3));
     }
     
     private void addButton4()
     {
      button4.setBounds(145,60,45,30);
      button4.addActionListener(this);
      panel.add(button4);
      setFont(new Font("Agency FB Regular", 5, 3));
     }
     
     private void addButton5()
     {
      button5.setBounds(10,90,45,30);
      button5.addActionListener(this);
      panel.add(button5);
      setFont(new Font("Agency FB Regular", 5, 3));
     }
     
     private void addButton6()
     {
      button6.setBounds(55,90,45,30);
      button6.addActionListener(this);
      panel.add(button6);
      setFont(new Font("Agency FB Regular", 5, 3));
     }
     
     private void addButton7()
     {
      button7.setBounds(100,90,45,30);
      button7.addActionListener(this);
      panel.add(button7);
      setFont(new Font("Agency FB Regular", 5, 3));
     }
     
     private void addButton8()
     {
      button8.setBounds(190,60,45,30);
      button8.addActionListener(this);
      panel.add(button8);
      setFont(new Font("Agency FB Regular", 5, 3));
     }
     
     private void addButton9()
     {
      button9.setBounds(10,120,45,30);
      button9.addActionListener(this);
      panel.add(button9);
      setFont(new Font("Agency FB Regular", 5, 3));
     }
     
     private void addButton10()
     {
      button10.setBounds(55,120,45,30);
      button10.addActionListener(this);
      panel.add(button10);
      setFont(new Font("Agency FB Regular", 5, 3));
     }
     
     private void addButton11()
     {
      button11.setBounds(100,120,45,30);
      button11.addActionListener(this);
      panel.add(button11);
      setFont(new Font("Agency FB Regular", 5, 3));
     }
     
     private void addButton12()
     {
      button12.setBounds(145,90,45,30);
      button12.addActionListener(this);
      panel.add(button12);
      setFont(new Font("Agency FB Regular", 5, 3));
     }
     
     private void addButton13()
     {
      button13.setBounds(190,90,45,30);
      button13.addActionListener(this);
      panel.add(button13);
      setFont(new Font("Agency FB Regular", 10, 3));
     }
     
     private void addButton14()
     {
      button14.setBounds(145,120,45,30);
      button14.addActionListener(this);
      panel.add(button14);
      setFont(new Font("Agency FB Regular", 10, 3));
     }
     
     private void addButton15()
     {
       button15.setBounds(190,120,45,30);
       button15.addActionListener(this);
       panel.add(button15);
       setFont(new Font("Agency FB Regular", 10, 3));
     }
     
     public void actionPerformed (ActionEvent ae){
    	 if(ae.getSource() == this.button1){
    	     int i = 1;
    		 String str = String.valueOf(i);
    		 field.setText(str);	 
    	 }
    	 if(ae.getSource() == this.button2) {
    		 int i = 2;
    		 String str = String.valueOf(i); 		 
    		 field.setText(str);
    	 }
    	 if(ae.getSource() == this.button3) {
    		 int i = 3;
    		 String str = String.valueOf(i); 		 
    		 field.setText(str);
    	 }
    	 if(ae.getSource() == this.button4) {
    		 
    	 }
    	 if(ae.getSource() == this.button5) {
    		 int i = 4;
    		 String str = String.valueOf(i); 		 
    		 field.setText(str);
    	 }
    	 if(ae.getSource() == this.button6) {
    		 int i = 5;
    		 String str = String.valueOf(i); 		 
    		 field.setText(str);
    	 }
    	 if(ae.getSource() == this.button7) {
    		 int i = 6;
    		 String str = String.valueOf(i); 		 
    		 field.setText(str);
    	 }
    	 if(ae.getSource() == this.button8) {

    	 }
    	 if(ae.getSource() == this.button9) {
    		 int i = 7;
    		 String str = String.valueOf(i); 		 
    		 field.setText(str);
    	 }
    	 if(ae.getSource() == this.button10) {
    		 int i = 8;
    		 String str = String.valueOf(i); 		 
    		 field.setText(str);
    	 }
    	 if(ae.getSource() == this.button11) {
    		 int i = 9;
    		 String str = String.valueOf(i); 		 
    		 field.setText(str);
    	 }
    	 if(ae.getSource() == this.button12) {

    	 }
    	 if(ae.getSource() == this.button13) {

    	 }
    	 if(ae.getSource() == this.button14) {
    		 String str = ".";		 
    		 field.setText(str);
    	 }
    	 if(ae.getSource() == this.button15) {
    	    if(ae.getSource() == this.button4) {
    	   	String a = field.getText() + field.getText();
    	   	field.setText(a);

    	    }
    	 }
     }
}

Und hier zur Frage : Wie bekomme ich es nun hin, dass z.b beim Button 4 (+-Button) eine Addition mit der 1. und 2. Zahl stattfindet (Also in gedrückter vorm: Zahlen - + - Zahlen).
Wäre froh wenn mir jemand weiterhelfen könnte :)
 

Zitrus

Bekanntes Mitglied
Habe doch ActionListener? Oder sehe ich das falsch?
Java:
 button12.addActionListener(this);
 

Zitrus

Bekanntes Mitglied
Vielen herzlichen Dank erstmal für deine Antwort! Meine Frage ist aber wie ich die Zahl vor und nach dem + bekomme! Wäre froh über eine Antwort
 

JavaMeister

Gesperrter Benutzer
DAs musst du "parsen". Also Zeichen für zeichen durchgehen...

Wenn Zahl, dann Zahl, wenn Zeichen, dann merken und dann das ausführen.
 

Zitrus

Bekanntes Mitglied
Könnte ich vielleicht ein Beispiel bekommen? Also muss sogesagt die Erste Zahl durchs parsen gemerkt werden dann das jeweilige Rechenzeichen und dann die zweite Zahl parsen? Bzw. Wie merke ich mir das Rechenzeichen?
 
Zuletzt bearbeitet:

Zitrus

Bekanntes Mitglied
Hi nochmal

Java:
    	  double d1 = Double.parseDouble(a);
    	        System.out.println(d1);
                
    	        field.setText("");
    	        
    	        double d2 = Double.parseDouble(b);
    	        System.out.println(d2);

Wie mache ich, dass d2 nach dem + erst angefangen wird zu bestimmen?
 
Zuletzt bearbeitet:

taro

Bekanntes Mitglied
Ich glaube du suchst sowas in der Art:

Java:
private double sum(String formula) {
        double ergebnis = 0;
        String[] addition = formula.split("\\+");
        for (int i=0; i<addition.length;i++)
        {
            ergebnis += Double.parseDouble(addition[i].trim().replace(",", "."));
        }
        return ergebnis;
    }
 
Zuletzt bearbeitet:

Zitrus

Bekanntes Mitglied
@taro

Java:
        String a = field.getText();
        String b = field.getText();
    	 
    	 if(ae.getSource() == this.button1){
             field.setText(field.getText() + "1");
    	 }
    	 if(ae.getSource() == this.button2) {	
    		 field.setText(field.getText() + "2");
    	 }
    	 if(ae.getSource() == this.button3) {	
    		 field.setText(field.getText() + "3");
    	 }
         
    	 if(ae.getSource() == this.button4) {
    	        double d1 = Double.parseDouble(a);
    	        System.out.println(d1);
              
    	        field.setText("");
    	       
    	           	     
    	 }

Die erste Zahl wird jetzt schon gespeichert, wie schaffe ich es jetzt die 2. Zahl abzuspeichern?
 

taro

Bekanntes Mitglied
Dein Code ist etwas ... nun ... gewöhnungsbedürftig - auch wenn ich deine Frage nicht ganz nachvollziehen kann, nehme ich an, das folgendes dein Problem löst:
statt
Java:
double d1 = Double.parseDouble(a);
welches ja den Text vor dem drücken eines Buttons beinhaltet einmal folgendes nutzen:

Java:
double d1 = Double.parseDouble(field.getText());
 

Zitrus

Bekanntes Mitglied
Ich möchte ja aber einmal die 1. Zahl als double und einmal die 2.zahl als double speichern. Mit deiner Lösungsmöglichkeit bekomme ich wieder nur die erste Zahl hin. Ich möchte anschließen die 1. und 2. Zahl addieren und dann mithilfe von dem = Button anzeigen

Zitat:
welches ja den Text vor dem drücken eines Buttons beinhaltet einmal folgendes nutzen:

Ich möchte ja den Text nach dem drücken des Buttons als Variable speichern.. :)
 
Zuletzt bearbeitet:

Joose

Top Contributor
Ich möchte ja aber einmal die 1. Zahl als double und einmal die 2.zahl als double speichern. Mit deiner Lösungsmöglichkeit bekomme ich wieder nur die erste Zahl hin. Ich möchte anschließen die 1. und 2. Zahl addieren und dann mithilfe von dem = Button anzeigen

Du speicherst deine Werte anscheinend in lokalen Variablen, leider sind diese Werte nur solange verfügbar wie die Methode ausgeführt wird.
Du solltest die Zahlen in Klassenattributen speichern. Überlege dir wie du den Taschenrechner als Konsolenprogramm realisieren würdest, wie würdest du hier 2 unterschiedliche Variablen speichern?
Nichts anderes ist es bei einem Taschenrechner mit UI der Input wird halt durch das Drücken eines Buttons festgelegt.
Generell glaube ich, fehlt dir noch das Verständnis zur OOP.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
N Statistische Auswertung von Logfiles (Einlesen, auswerten und grafische Aufbereitung von logfiles) mit Java Allgemeine Java-Themen 9
M Selenium JUnit Tests (Auswahl von Testmethoden auswerten) Allgemeine Java-Themen 5
L SWT Mathematische Formel mit SWT Textfield auswerten? Allgemeine Java-Themen 3
A interaktives PDF auslesen/auswerten? Allgemeine Java-Themen 0
M XML auswerten Allgemeine Java-Themen 1
N Method-Annotations in aufgerufener Methode auswerten Allgemeine Java-Themen 2
R CSV-Datei (korrupt?) auswerten Allgemeine Java-Themen 9
W Annotations selbst erstellen und auswerten Allgemeine Java-Themen 4
M Konstruktoraufruf dynamisch auswerten und SQL bauen Allgemeine Java-Themen 10
H Dokumente auswerten Allgemeine Java-Themen 6
I Große Datei am effektivsten/performantesten auslesen und auswerten? Allgemeine Java-Themen 6
A Wie eine Seriennummer erzeugen und auswerten? Allgemeine Java-Themen 11
G Große XML-Dateien einlesen und auswerten . Allgemeine Java-Themen 2
M Date Range auswerten und die Monate berechnen Allgemeine Java-Themen 2
D Befehlszeilenparameter auswerten Allgemeine Java-Themen 3
P command line parameter auswerten Allgemeine Java-Themen 3
K Einen String als Bedingung auswerten Allgemeine Java-Themen 7
S Logfile auswerten Allgemeine Java-Themen 2
I Fragen zum Internetseiten Einlesen/Auswerten Allgemeine Java-Themen 5
P Audiofile/Audiostream auswerten Allgemeine Java-Themen 8
O regulärer Ausdruck zum durchsuchen eines Strings verwenden Allgemeine Java-Themen 2
T Rotationswinkel eines Bildes bestimmen Allgemeine Java-Themen 4
C Probleme beim Erstellen eines runnable-jar files Allgemeine Java-Themen 1
J JavaScript innerhalb eines Java Projekts ausführen Allgemeine Java-Themen 2
Encera Größe eines Objektes in Byte berechnen Allgemeine Java-Themen 2
8u3631984 Prüfen ob min. ein Element eines Sets in einem anderen Set enh Allgemeine Java-Themen 4
M Array Rang eines Elements Allgemeine Java-Themen 4
OnDemand Teile eines Links entfernen Allgemeine Java-Themen 6
H Auslesen eines (LDAP-)Attributs in Active Directory Allgemeine Java-Themen 2
W JSON parsen eines ,mit JS.stringify erstellten Strings Allgemeine Java-Themen 27
H Textposition eines gedrehten Textes verschieben Allgemeine Java-Themen 8
berserkerdq2 run-methode eines Threads so programmieren, dass 30x die Sekunde etwas ausgeführt wird. Allgemeine Java-Themen 44
E Ersetzen eines Bildes in der Kopfzeile eines Word-Docx-Dokuments mit Apache POI XWPF Allgemeine Java-Themen 0
N Fahrtrichtung eines selbstfahrenden Auto ändern Allgemeine Java-Themen 3
T Letztes Zeichen eines Strings enfernen Allgemeine Java-Themen 14
S Übergabe eines Sortierkriteriums für ein Artikel Array mittels BiPredicate<Artikel, Artikel> Allgemeine Java-Themen 13
gotzi242 Schatzsuche mithilfe eines O(log n) Algorithmus Allgemeine Java-Themen 2
C Koordinaten LONG/LAT eines neuen Punktes in bestimmter Entfernen und Winkel berechnen Allgemeine Java-Themen 3
Tobero Meine Funktion für das beinhalten eines Punktes in einem Kreis funktioniert nicht Allgemeine Java-Themen 5
LimDul Direktes return eines Array geht nicht Allgemeine Java-Themen 20
S Mittelwert anhand eines Stream berechnen Allgemeine Java-Themen 5
kodela Breite eines erweiterten Monitors feststellen Allgemeine Java-Themen 5
R Zeilen eines 2d Arrays abwechselnd links und rechts mit Nullen auffüllen Allgemeine Java-Themen 14
Zrebna Alternative Darstellung eines Codesnippets Allgemeine Java-Themen 33
kodela Inhalt eines Arrays ändert sich mysteriös Allgemeine Java-Themen 2
bueseb84 Wget mit Wildcards - oder wie lädt man bei JFrog die letzte Version eines Artifacts herunter Allgemeine Java-Themen 3
N Erkennen eines Programs Allgemeine Java-Themen 2
N Pausieren eines Programmes Allgemeine Java-Themen 4
D Input/Output Implementierung eines CommandHandlers/Parsers für viele Eingaben Allgemeine Java-Themen 26
M Gibt es eine API die den aktuellen Wert eines Indikators beim Trading zurückgibt? Allgemeine Java-Themen 7
F Wie bekommt man alle Filenamen eines Webserver Verzeichnisses Allgemeine Java-Themen 6
A Fehler beim Öffnen eines Projekts Allgemeine Java-Themen 6
N Eigenschaften eines Buttons per Setter verändern Allgemeine Java-Themen 5
S Ausfuehrung eines Programms aufzeichnen..? Allgemeine Java-Themen 4
X Ermittlung eines doppelte Paars mit Streams Allgemeine Java-Themen 50
Stonie Prüfen von direkter Implementierung eines Interfaces Allgemeine Java-Themen 7
S Vorbereitung eines Praktikums Allgemeine Java-Themen 4
H Aufruf eines Web Service anhand übergebenen Parameter Allgemeine Java-Themen 2
M Weiterleiten von empfangenen Nachrichten eines StompSessionHandlers Allgemeine Java-Themen 1
J Programm zum Suchen eines Wortes im Dateisystem Allgemeine Java-Themen 4
H Rename eines Projekts Allgemeine Java-Themen 1
J Fenstergröße eines anderen Programmes auslesen Allgemeine Java-Themen 9
ReinerCoder auf Klassen innerhalb eines package zugreifen Allgemeine Java-Themen 22
Meeresgott Erste Schritte Sourcetree - Git | Suchen eines Commits Allgemeine Java-Themen 2
E Status eines USB Mikrofon abfragen Allgemeine Java-Themen 2
DaCrazyJavaExpert OOP Ansätze und Tipps zum Porgrammieren eines Taschenrechners Allgemeine Java-Themen 25
A OOP Problem beim Berechnen der größten Fläche eines Ringes Allgemeine Java-Themen 19
JavaNewbie2.0 Start eines Anderen Programm erkennen Allgemeine Java-Themen 6
I Verbindung eines Java-Plugins mit Webserver Allgemeine Java-Themen 3
L Auswertung eines Testes funktioniert nicht Allgemeine Java-Themen 37
G Iteratoren - Wie kann man mithilfe von Iteratoren nur jeden zweiten Wert eines TreeSets ausgeben? Allgemeine Java-Themen 4
GreenTeaYT Elemente eines 2Dim LinkedList von links nach rechts ausgeben? Allgemeine Java-Themen 0
B Spalten eines 2d-Arrays Allgemeine Java-Themen 2
M Rechenprogramm eines wissenschaftlichen Taschenrechners Allgemeine Java-Themen 4
S Eigenschaften (hier Verknüpfung) eines Files lesen Allgemeine Java-Themen 2
E Typüberprüfung eines chars Allgemeine Java-Themen 5
H Hilfe bei Erstellung eines Hilfe Fenster bei Tastendruck (F1 bei Win98) Allgemeine Java-Themen 5
T Teile eines Double-Wertes verändern Allgemeine Java-Themen 2
R Rückgabe eines Arrays durch Funktion Allgemeine Java-Themen 9
H Datentypen Typ eines Arrays überprüfen Allgemeine Java-Themen 9
RalleYTN DPI eines Bildes ändern Allgemeine Java-Themen 4
N Methoden Methoden einer Klasse auf Grundlage eines Strings aufrufen Allgemeine Java-Themen 6
K Bestimmten Bereich eines Strings lesen Allgemeine Java-Themen 6
C -Verschiedene Versionen eines Programms verwalten Allgemeine Java-Themen 7
O Datentypen Erstellung eines Containers, der verschachtelte Map-Strukturen beherbergen kann Allgemeine Java-Themen 0
A einmalige Ausführung eines Methodenabschnittes Allgemeine Java-Themen 3
F CPU Last eines Thread ausfindig machen Allgemeine Java-Themen 0
L Menge der Buchstaben eines Textes zählen Allgemeine Java-Themen 3
F Teil eines Bildes laden Allgemeine Java-Themen 1
Neumi5694 Operatoren regEx für das Erstellen eines Strings verwenden Allgemeine Java-Themen 3
P Löschen eines keys in einer SortedMap Allgemeine Java-Themen 5
RalleYTN Input/Output URL eines Zip Entry? Allgemeine Java-Themen 2
S Alle Methodenaufrufe eines Threads notieren..? Allgemeine Java-Themen 7
J NullPointerExeption bei Inizialisierung eines Arrays Allgemeine Java-Themen 3
I Setzen und Lesen eines Objektes (Enum?) Allgemeine Java-Themen 10
L Implementierung eines AVT-Baums Allgemeine Java-Themen 2
D Größe der Zahlenkombinationen eines Arrays begrenzen Allgemeine Java-Themen 3
D Objekt entlang eines Funktionsgraphens bewegen Allgemeine Java-Themen 6
B Existenz eines Files max 30 sec prüfen Allgemeine Java-Themen 5
U Koordinaten alle Pixel eines Dreiecks zeichnen ausgeben Allgemeine Java-Themen 5

Ähnliche Java Themen

Neue Themen


Oben