Einfacherer Taschenrechner, ActionListener funzt nicht.

Status
Nicht offen für weitere Antworten.

NichtSchlau

Mitglied
Hab mich mal durch Java 2 für Dummies durchgeprügelt und danach versucht einen Taschenrechner zu basteln, es funzt eigentlich alles, nur der Klick auf ein anderes Zeichen als einer Zahl führt zu Fehlern.


2 Fehlermeldungen:


1. offnet sich ein neuer Tab mit folgendem:
ss_FehlermeldungInTab.jpg


Wenn ich auf Attach Source klicke kommt:
hlerim_AcitonListener.jpg


Das Kapiere ich überhaupt nicht, da ich rt.jar nirgendsverwende....


2. kommt in der Konsole folgende Fehlermeldung:

Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
at taschenrechner.TaschenrechnerPanel.calculate(TaschenrechnerPanel.java:107)
at taschenrechner.TaschenrechnerPanel$BefehlsAktion.actionPerformed(TaschenrechnerPanel.java:98)
at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
at javax.swing.DefaultButtonModel.setPressed(Unknown Source)
at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(Unknown Source)
at java.awt.Component.processMouseEvent(Unknown Source)
at javax.swing.JComponent.processMouseEvent(Unknown Source)
at java.awt.Component.processEvent(Unknown Source)
at java.awt.Container.processEvent(Unknown Source)
at java.awt.Component.dispatchEventImpl(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source)
at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source)
at java.awt.Container.dispatchEventImpl(Unknown Source)
at java.awt.Window.dispatchEventImpl(Unknown Source)
at java.awt.Component.dispatchEvent(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)

Hier ist der Code der Klasse Taschenrechner
Java:
package taschenrechner;


import javax.swing.*;



public class Taschenrechner
{
   


	static private JFrame Fenster = new JFrame();
	static private TaschenrechnerPanel Panel = new TaschenrechnerPanel(); 


    public static void main(String[] args)
    {
        Fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Fenster.setVisible(true);
        Fenster.setTitle("Einfacher Gammeltaschenrechner");
        Fenster.add(Panel);
        Fenster.pack();
        
    }
}


Hier der Code vom TaschenrechnerPanel

Java:
package taschenrechner;

import java.awt.*;
import java.awt.event.*;



import javax.swing.*;


public class TaschenrechnerPanel extends JPanel
{


		private JButton Display = new JButton("0");
		private JPanel Tastenkonsole = new JPanel();
		private JButton Knopf;
		private ActionListener Eingabe = new EingabeAktion();
		private ActionListener Befehl = new BefehlsAktion();
		private double Ergebnis;
		private String letzterBefehl;
		private boolean erster = true;
 

	
		public TaschenrechnerPanel()
		{
				setLayout(new BorderLayout());
				Display.setEnabled(false);
				add(Display, BorderLayout.NORTH);
		
				Tastenkonsole.setLayout(new GridLayout(4, 4));
				add(Tastenkonsole, BorderLayout.CENTER);
				Tastenkonsole.setLayout(new GridLayout(4,4));
		

		
				neuerKnopf("7", Eingabe);
				neuerKnopf("8", Eingabe);
				neuerKnopf("9", Eingabe);
				neuerKnopf("/", Befehl);
				neuerKnopf("4", Eingabe);
				neuerKnopf("5", Eingabe);
				neuerKnopf("6", Eingabe);
				neuerKnopf("*", Befehl);
				neuerKnopf("1", Eingabe);
				neuerKnopf("2", Eingabe);
				neuerKnopf("3", Eingabe);
				neuerKnopf("-", Befehl);
				neuerKnopf("0", Eingabe);
				neuerKnopf(".", Eingabe);
				neuerKnopf("=", Befehl);
				neuerKnopf("+", Befehl);
		}
	
		private void neuerKnopf(String Name, ActionListener listener)
		{
				Knopf = new JButton(Name);
				Knopf.addActionListener(listener);
				Tastenkonsole.add(Knopf);
		}

		private class EingabeAktion implements ActionListener
		{
				public void actionPerformed(ActionEvent event)
				{
						String input = event.getActionCommand();
						if (erster)
						{
								Display.setText("");
								erster = false;
						}
						Display.setText(Display.getText() + input);
				}
		}
	
		private class BefehlsAktion implements ActionListener
		{
				public void actionPerformed(ActionEvent event)
				{
						String command = event.getActionCommand();
	 
						if (erster)
						{
								if (command.equals("-"))
								{
										Display.setText(command);
										erster = false;
								}
								else
									letzterBefehl = command;
						}
						else
						{
								
								calculate(Double.parseDouble(Display.getText()));
								letzterBefehl = command;
								erster = true;
						}
				}
		}

		public void calculate(double x)
		{
			if (letzterBefehl.equals("+")) Ergebnis += x;
			else if (letzterBefehl.equals("-")) Ergebnis -= x;
			else if (letzterBefehl.equals("*")) Ergebnis *= x;
			else if (letzterBefehl.equals("/")) Ergebnis /= x;
			else if (letzterBefehl.equals("=")) Ergebnis = x;
			Display.setText("" + Ergebnis);
	   }
}



Ich hab das ganze Projekt für Eclipse als Zip angehängt, um den edlen Helden, von denen ich mir Hilfe erhoffe die Arbeit zu erleichtern :toll:



Danke für die Antworten im voraus.



Mit freundlichem Gruße.
 
Zuletzt bearbeitet:

Ein Keks

Bekanntes Mitglied
rt.jar ist ein teil vom JRE xD
eclipse versucht den source von ActionListener zu öffnen und findet diesen nicht. das hat nix mit deinem programm zu tun (der source ist übrigens im sdk ordner als src.zip falls es dich interessiert)

zu deinem fehler du hast nen nullpointer in zeile 107 von TascheRechnerPanel scheint als wäre "letzterBefehl" null aso nicht initialisiert
 

NichtSchlau

Mitglied
Mkay, danke, joah, und warum ist letzerBefehl leer?
Im Listener Befehlsaktion fülle ich ihn doch mit command?


Das der er den ActionListener nicht findet kann nicht sein, da Zahleneingaben ja Funktionieren, der Obere Listener für Zahlen, welcher auch vom ActionListener abgeleitet wird funzt also.


MfG
 
Zuletzt bearbeitet:

Ein Keks

Bekanntes Mitglied
es findet nur den sourcecode der klasse ActionListener nicht das ist auch nicht dragisch den braucht man ja auch nicht

sieht so aus als würdest du letzterBefehle nix zuweisen wenn "!erster" ist
lass dir mal zu beginn der calculate methode letzerBefehl ausgeben nicht das ich mich irre
 

NichtSchlau

Mitglied
es findet nur den sourcecode der klasse ActionListener nicht das ist auch nicht dragisch den braucht man ja auch nicht

sieht so aus als würdest du letzterBefehle nix zuweisen wenn "!erster" ist
lass dir mal zu beginn der calculate methode letzerBefehl ausgeben nicht das ich mich irre



Verzeih der doofen Frage, aber es gibt für Java doch sicher sowas wie var_dump/ print_f (die sind von PHP), was einem dem Wert in der Konsole ausgibt, damit ich nicht extra ein neues Feld mit ausgabe machen muss.

Wie macht man das in Java?

MfG
 

Ein Keks

Bekanntes Mitglied
System.out.println("blablubb"); in eclipse kannste aber auch syso eingeben und strg+leertaste drücken dann schreibt es dir das xD
 

NichtSchlau

Mitglied
Thx, command allerdings ist gefüllt, und zwar mit dem entsprechendem Zeichen.
letzterBefehl wird mit command gefüllt.

Der Fehler muss irgendwo in dem Listener Befehlsaktion liegen, der erste Listener funzt schließlich auch.
Ich bin ein wahrer Künsterl, mache sogar in einem popeligem Taschenrechner Fehler :oops:

MfG
 
Zuletzt bearbeitet:

Ein Keks

Bekanntes Mitglied
In EingabeAktion setzt du "erster" auf false sobald du ne zahl eingibst (beziehungsweise auch beim minus)
wenn du nun Befehlsaktion aufrufst wird nur
Java:
   calculate(Double.parseDouble(Display.getText()));
   letzterBefehl = command;
    erster = true;
ausgeführt. letzterBefehl ist also noch null bei calculate
Lösung: oben statt
Java:
String letzterBefehl;
Java:
String letzterBefehl = "";
schreiben und die calculate methode wie folgt verändern:
Java:
public void calculate(double x) {
		if (letzterBefehl.equals("+"))
			Ergebnis += x;
		else if (letzterBefehl.equals("-"))
			Ergebnis -= x;
		else if (letzterBefehl.equals("*"))
			Ergebnis *= x;
		else if (letzterBefehl.equals("/"))
			Ergebnis /= x;
		else if (letzterBefehl.equals("="))
			Ergebnis = x;
		else return;
		Display.setText("" + Ergebnis);
	}
(bewirkt das die methode bei andren werten für letzterBefehl abgebrochen wird)

edit: scheinbar gibts beim "-" noch probleme
 

NichtSchlau

Mitglied
In EingabeAktion setzt du "erster" auf false sobald du ne zahl eingibst (beziehungsweise auch beim minus)
wenn du nun Befehlsaktion aufrufst wird nur
Java:
   calculate(Double.parseDouble(Display.getText()));
   letzterBefehl = command;
    erster = true;
ausgeführt. letzterBefehl ist also noch null bei calculate
Lösung: oben statt
Java:
String letzterBefehl;
Java:
String letzterBefehl = "";
schreiben und die calculate methode wie folgt verändern:
Java:
public void calculate(double x) {
		if (letzterBefehl.equals("+"))
			Ergebnis += x;
		else if (letzterBefehl.equals("-"))
			Ergebnis -= x;
		else if (letzterBefehl.equals("*"))
			Ergebnis *= x;
		else if (letzterBefehl.equals("/"))
			Ergebnis /= x;
		else if (letzterBefehl.equals("="))
			Ergebnis = x;
		else return;
		Display.setText("" + Ergebnis);
	}
(bewirkt das die methode bei andren werten für letzterBefehl abgebrochen wird)

edit: scheinbar gibts beim "-" noch probleme



Vielen Dank, ich leg bei Gott n gutes wort für dich ein :D :bae:


MfG
 
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