Zum Inhalt springen

Fehlermeldung in der Console :(


Empfohlene Beiträge

Geschrieben

Hi Leute,

ich hab das Problem aus diesem Thread hier jetzt mehr oder weniger gelöst, in dem ich es einfach umprogrammiert habe und die Editier funktion

mit ins selbe Fenster wie den Rest gemacht hab.

Jetzt hab ich aber ein neues Problem.

Ich kann das Array jetzt um beliebig viele Kunden erweitern, und diese Sogar in der Editier Funktion laden, wenn ich jetzt einen Kunden geladen habe, ein oder zwei Daten ändere und auf Speichern drücke, speichert er den Kunden einwandfrei.

Wenn ich danach nochmal einen Kunden editieren will, die Kundennummer eintrage und auf Laden drücke, passiert nichts, ausser das er in der Konsole diese Fehlermeldung ausgibt:

Exception occurred during event dispatching:

java.lang.NumberFormatException:

at java.lang.Integer.parseInt(Integer.java:426)

at java.lang.Integer.parseInt(Integer.java:454)

at FirmaGUI.KundeLaden(FirmaGUI.java:209)

at FirmaGUI$AktionsAbhoerer.actionPerformed(FirmaGUI.java:430)

at java.awt.Button.processActionEvent(Button.java:329)

at java.awt.Button.processEvent(Button.java:302)

at java.awt.Component.dispatchEventImpl(Component.java:2595)

at java.awt.Component.dispatchEvent(Component.java:2499)

at java.awt.EventQueue.dispatchEvent(EventQueue.java:319)

at java.awt.EventDispatchThread.pumpOneEvent(EventDispatchThread.java:10

3)

at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)

at java.awt.EventDispatchThread.run(EventDispatchThread.java:84)

ich verstehs net, denn wenn ich die Aktion das erste mal ausführe funktioniert sie einwandfrei. Beim zweiten mal dann nicht mehr.

Das Laden und Speichern von Kunden sie so aus:


public void KundeLaden() {


	lkunde = Integer.parseInt(kndnr.getText());


	if(lkunde > kundenliste.length-1 || lkunde<1)

	{

		editVorname.setText(kundenliste[0].vorname);

		editName.setText(kundenliste[0].name);

		editStrasse.setText(kundenliste[0].strasse);

		editPlz.setText(kundenliste[0].plz);

		editWohnort.setText(kundenliste[0].wohnort);

		editTelefon.setText(kundenliste[0].telefon);

		editEmail.setText(kundenliste[0].email);

	}


	else

	{

		editVorname.setText(kundenliste[lkunde].vorname);

		editName.setText(kundenliste[lkunde].name);

		editStrasse.setText(kundenliste[lkunde].strasse);

		editPlz.setText(kundenliste[lkunde].plz);

		editWohnort.setText(kundenliste[lkunde].wohnort);

		editTelefon.setText(kundenliste[lkunde].telefon);

		editEmail.setText(kundenliste[lkunde].email);

	}



                         }



public void KundeSpeichern()

{


		String merkename = editName.getText(); 

		editName.setText(""); //Text im Namensfeld löschen 


		String merkevorname = editVorname.getText(); 

		editVorname.setText(""); 


		String merkestrasse = editStrasse.getText(); 

		editStrasse.setText(""); 


		String merkeplz = editPlz.getText(); 

		editPlz.setText(""); 


		String merkewohnort = editWohnort.getText(); 

		editWohnort.setText("");


		String merketelefon = editTelefon.getText(); 

		editTelefon.setText(""); 


		String merkeemail = editEmail.getText(); 

		editEmail.setText(""); 


		kndnr.setText("");


		kundenliste[lkunde].name = merkename;

		kundenliste[lkunde].vorname = merkevorname;

		kundenliste[lkunde].strasse = merkestrasse;

		kundenliste[lkunde].plz = merkeplz;

		kundenliste[lkunde].wohnort = merkewohnort;

		kundenliste[lkunde].telefon = merketelefon;

		kundenliste[lkunde].email = merkeemail;


		textbereichKunden.setText(""); 

		anzeigenKundenliste();

		kundenfenster.setSize(420,600);

		lkunde = 0;


}

Vielleich noch eine Kurze erklärung hierzu.

kundenfenster.setSize(420,600);

Die Elemente zum Editieren existieren vorher schon im Frame, bei Drücken auf den Button editieren, wird der Frame einfach so groß gemacht, dass die Editierelemente zum vorschein kommen.

Ich hoffe jemand kann mir erklären woran das liegt, bin schon wieder am verzweifeln.

danke & c ya

LordK

Geschrieben

Hallöchen, LordK!

Es scheint so, als ob beim Parsen der Interger-Zahl keine Zahl aus dem String extrahiert werden kann, aus welchem Grund auch immer - entweder ist der String leer oder enthält nur Buchstaben. Mit dem Problem musst du dich beschäftigen.

Einen Weg die Exception abzufangen, besser gesagt zu verarbeiten, gibt es mit try-catch-Blöcken. Du scheinst ja schon einen alternativen Weg für die Bearbeitung geschrieben zu haben, nur wird der nie erreicht, weil schon vorher die NumberFormatException vom parseInt geworfen wird, die nicht bearbeitet wird.

In Code würde sich das try-catch dann etwa so antun:

 lkunde = 0;

try {

   lkunde = Integer.parseInt(kndnr.getText());

   // hier vielleicht noch die Bearbeitung, wenn der Intger-Wert

   // geparst wurde...

} catch (NumberFormatException nfe) {

   System.out.println("Kleiner Fehler: "+nfe);

   // hier die Debugging-Ausgaben und vielleicht der

   // alternative Weg der Verarbeitung

   // ---

   // Anstatt der NumberFormatException kannst du auch eine

   // generelle Exception abfangen, damit wird dann alles

   // abgegriffen

}

Ich hoffe, ich habe alle Klarheiten beseitigt! ;)

Ciao,

Florian

Geschrieben

OK Danke für den Tip :)

Ich hab das jetzt mal ausprobiert.

Offentsichtlich, ließt er beim zweiten mal ein Leerstring aus, ich weiß

nur net warum, eigentlich steht ne Zahl im Feld die er Parsen sollte.

Ich hatte beim Speichervorgang ja noch diese Zeile drin

kndnr.setText("");

aber an der hats nicht gelegen, die hab ich raus geworfen und

der selbe Fehler tritt immer noch auf.

Ich versteh nur net, warum erst beim zweiten mal.

Geschrieben

OK hat sich erledigt,

ich hab den Fehler gefunden.

Es lag dran, dass die ganzen Textfelder zweimal erzeugt wurden,

da sie bei jeden Knopfdruck auf Editieren neu erzeugt wurden.

Es ist schon grausam wie banal manche Fehler sind und man sie

einfach nicht findet :bimei

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...