Integer.parseInt

JavaMeetsBlueJ

Bekanntes Mitglied
Hallo Forum,

bei nachfolgenden Code wird eine NumberFormatException geworfen, kann mir da jemand auf die Sprünge helfen wieso. Mir ist das ziemlich rätselhaft. Hier die beteiligten Klassen(ja der ist noch nicht sauber;))

Klasse Gui:
Java:
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JTextField;


public class Gui extends JFrame{

	JPanel oberflaeche = new JPanel();                                   //Hauptpanel
	JPanel spielfeld = new JPanel();                                     //kommt auf das Hauptpanel
	JPanel bedienfeld = new JPanel();                                    //kommt auf das Hauptpanel unter das Spielfeld
	//-----------------------------------------------------------------------------------------------------
	
	//-----------------------------------------------------------------------------------------------------
	JTextField edtZahlen[][] = new JTextField[9][9];                     //jeweils ein Textfeld kommt auf jeweils ein Zahlenfeld
	//-----------------------------------------------------------------------------------------------------
	BorderLayout layout = new BorderLayout();
	GridLayout gamelayout = new GridLayout(9, 9);
	//-----------------------------------------------------------------------Layouts----------

	JButton kontrollieren = new JButton("kontrollieren");
	JButton schliessen = new JButton("Schließen");
//---------------------------------------------------------------------------Buttons----------------------
	public Gui()
	{
	  
	  ActionListener al = new ActionHandler(this);
	   
	   setTitle("SudokuReader");
		setSize(800, 800);
		setLocationRelativeTo(null);
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		
		oberflaeche.setLayout(layout);
		bedienfeld.setLayout(new BorderLayout());
		add(oberflaeche);
		oberflaeche.add(bedienfeld,BorderLayout.SOUTH);
		bedienfeld.add(kontrollieren,BorderLayout.WEST);
		bedienfeld.add(schliessen,BorderLayout.EAST);
		spielfeld.setLayout(gamelayout);
		oberflaeche.add(spielfeld,BorderLayout.CENTER);
		
		kontrollieren.addActionListener(al);
		schliessen.addActionListener(al);
		
		setResizable(false);
		
	//-------------------------------------------------------------	
		
		//Erzeugung des kompletten Spielfeldes
		
		for(int zeile = 0; zeile<9;zeile++){
			for(int spalte = 0; spalte<9; spalte++){
				
				
				
				edtZahlen[zeile][spalte] = new JTextField(2);
				spielfeld.add(edtZahlen[zeile][spalte]);
				edtZahlen[zeile][spalte].setText( zeile +" ");
				

			}

		}
		//-----------------------------------------------------------
		
		add(oberflaeche);
		
	
		

		}
	
 
}

Klasse Berechnungen:
Java:
public class Berechnungen {
	
	static int tempZahl;
	static int tempElement;
	static boolean isZeile = true;
	static boolean isSpalte = true;
	
	public static boolean pruefeZeilen(Gui fenster)
	{
		for(int zeile = 0; zeile < 9; zeile++){
			for(int element = 0; element < 9; element++)
			{
				for(int spalte = 0; spalte < 9; spalte++)
				{
					try{tempZahl = Integer.parseInt(fenster.edtZahlen[zeile][spalte].getText());
					    tempElement = Integer.parseInt(fenster.edtZahlen[zeile][element].getText());
					    
					    
					    if(spalte != element && tempZahl==tempElement)
					    	{isZeile = false;
					    	
					    	System.out.println("Zeilen wahr: "+isZeile);
					    	break;
					    	}
					   
					    else{
					    	isZeile = true;
					    }
	
					    	
					}catch(Exception e)
					{
						System.out.println(e);     // Wieso wird hier was ausgegeben? Ich füll das Textfeld doch nur mit Zahlen :(
					}
				}
			}
		}
		return isZeile;
		
	}
	
	
	
	
}

Die Klasse Berechnungen soll (bisher) prüfen, ob eine Zahl in einer Reihe eines Sudokus doppelt vorkommt.

Meldung: NumberFormatException: For string input: "X ", wobei X hier eine Zahl ist.
MfG
 
Zuletzt bearbeitet von einem Moderator:

njans

Top Contributor
Du kannst doch mal mittels System.out.println() die Strings ausgeben lassen und dann siehst du ja, wie der String aussieht.

trim() den Text bevor du ihn parst.
Java:
edtZahlen[zeile][spalte].setText( zeile +" ");

oder mach es gleich schlauer:
Java:
edtZahlen[zeile][spalte].setText( String.valueOf(zeile));
 
Zuletzt bearbeitet:

HimBromBeere

Top Contributor
Schonmal versucht, das folgende auszuführen?
Java:
System.out.println(Integer.parseInt("5 "));
Die Exception kommt, weil du eben nicht einfach "5 " in 5 überführen kannst, sondern erst, wie njans schon sagte, die Leerzeichen entfernen musst.
 

JavaMeetsBlueJ

Bekanntes Mitglied
Ok ich bau das mal um, ich dachte Java ist so "schlau" und kann das. Könnte ich nicht auch gleich die Zahl, die ich in das Textfeld schreibe in einen String umwandeln, sodass ich keine Leerzeichen hab. (Ist das vielleicht das was njans meint?)

MfG
 

njans

Top Contributor
Java:
edtZahlen[zeile][spalte].setText( String.valueOf(zeile));
Ja das meine ich ;)
Anstatt da über den Operator + im Kontext eines Strings " " etwas zu machen, nehme lieber die Methode, die die Klassse String anbietet.
 

Kiri

Bekanntes Mitglied
wenn du da

[JAVA=14]
try{tempZahl = Integer.parseInt(fenster.edtZahlen[zeile][spalte].getText());
tempElement = Integer.parseInt(fenster.edtZahlen[zeile][element].getText());
[/code]

jeweils ein trim() dran hängst, sollte es auch reichen!

also sowas

Java:
tempZahl = Integer.parseInt(fenster.edtZahlen[zeile][spalte].getText().trim());
 

timbeau

Gesperrter Benutzer
Java ist nicht "schlau" , Java macht genau das was in den APIs drinsteht. Und das ist auch gut so. Denn wen Computer so handeln, wie Menschen denken, dann wirds katastrophal.

Für dich ist .trim() die Lösung aber die Zuweisung nicht vergessen.
 

JavaMeetsBlueJ

Bekanntes Mitglied
Lernt man die ganzen die Methoden, die man auf den unzähligen Objekten in Java aufrufen kann, im Laufe sienes Lebens kennen, oder wie kommt man daran? In der Java Api suchen, nach etwas, dessen Existenz einem noch nichtmal bewusst ist, geht ja auch schwer.
MfG
 

Kiri

Bekanntes Mitglied
Lernt man die ganzen die Methoden, die man auf den unzähligen Objekten in Java aufrufen kann, im Laufe sienes Lebens kennen, oder wie kommt man daran? In der Java Api suchen, nach etwas, dessen Existenz einem noch nichtmal bewusst ist, geht ja auch schwer.
MfG

Naja, an gewissen Methoden kommt keiner vorbei und da gehört trim() dazu. Du musst einfach logisch an die Sache herangehen. Wo ist das Problem? In deinem Fall das dein String nicht nur Ziffern hatte sondern auch ein Whitespace am Ende. Damit wäre dein Problem lokalisiert - es ist der String. Jetzt schaust du in der API der Klasse String nach einer Methode, die die Whitespaces am Anfang und Ende entfernt. Mit etwas Glück gibt es die - wie in diesem Fall. Guckst du hier! Allgemein solltest du über den Tellerand schauen und dir eine Klasse die du so häufig benutzt auch genauer in der API anschauen, denn String hat viele nützliche Methoden!
 

JavaMeetsBlueJ

Bekanntes Mitglied
Ein weiteres Problem, was ich habe, ist, dass trotz des
Java:
break;
in der innersten for-Schleife die Schleife nicht abebrochen wird, wenn isZeile false ist. Woran leigt das? Die Methode liefert mit Standardbelegung false zurück, was ja auch richtig ist, aber Ressourcenmäßig ist das schon ziemlich schlecht. Eigentlich wollte ich mich mit sonem Anfängerkram nicht mehr abgeben... . Exception ist jetzt weg ;) Danke
 
Zuletzt bearbeitet:

njans

Top Contributor
Das lernt man durch benutzen und lesen kennen.
Nebenbei finde ich es schöner einen String aus einem int mittels String.valueOf() zu machen, als sinnlosen Ballast anzuhängen (value + " ") und dann diesen wieder wegzutrimmen. Das war auch die Aussage meines ersten Posts ;)
 

Kiri

Bekanntes Mitglied
Das lernt man durch benutzen und lesen kennen.
Nebenbei finde ich es schöner einen String aus einem int mittels String.valueOf() zu machen, als sinnlosen Ballast anzuhängen (value + " ") und dann diesen wieder wegzutrimmen. Das war auch die Aussage meines ersten Posts ;)

Dass er das macht habe ich glatt übersehen - da hast du natürlich recht! Allerdings finde ich ein trim() bei Benutzereingaben auch nicht verkehrt.
 
Ein weiteres Problem, was ich habe, ist, dass trotz des
Java:
break;
in der innersten for-Schleife die Schleife nicht abebrochen wird, wenn isZeile false ist. Woran leigt das? Die Methode liefert mit Standardbelegung false zurück, was ja auch richtig ist, aber Ressourcenmäßig ist das schon ziemlich schlecht. Eigentlich wollte ich mich mit sonem Anfängerkram nicht mehr abgeben... . Exception ist jetzt weg ;) Danke

Falls das Problem noch besteht, das [c]break;[/c] in Zeile 34 setzen ?

Hier [c]static boolean isZeile = true;[/c] könnte man das [c]true[/c] weglassen, ist ja per default true ?
 

Noctarius

Top Contributor
PS: Statt [c]zeile + " "[/c] würde auch noch [c]zeile + ""[/c] funktionieren, ist aber genauso unschön. Nimm die [c]String.valueOf(...)[/c] Methode :)
 

njans

Top Contributor
Man kann auch Schleifen labes zuteilen:

Java:
mylabel:
for (...)
{
  mylabel2:
  for(...)
  {
  break mylabel; // Springt aus den ganzen Schleifen
  }
}
 

timbeau

Gesperrter Benutzer
Ich würde das ganze Mal unterteilen. Erstelle dir eine Methode die eine Zeile liest und in einer geeigneten Datenstruktur speichert. Mit dieser Datenstruktur rufst du dann eine Methode auf, die prüft ob in einer Liste oder in einem Array doppelte Einträge vorkommen. Tipp Sets anwenden.

Dann hast du 2 Schritte, mehr Modularität, kannst prüfen wo es hakt und die Methode mehrfach verwenden. (Spalten, Blöcke etc)
 

JavaMeetsBlueJ

Bekanntes Mitglied
Danke für den Tip mit dem Label. Ebenso finde ich das Zwischenspeichern in Arrays auch nicht schlecht, aber das mach ich erst wenn alles läuft, man kann ja mehrere Versionen basteln;) Später bekommt das Textfeld dann auch noch einen Getter, um nicht gegen das Prinzip der Kapselung zu verstoßen(Textfeld wird dann private).

MfG
 

timbeau

Gesperrter Benutzer
Dieser Tip mit dem Label ist "ugly" hoch 10. Dafür lagert man aus und beendet die ausgelagerte Methode mit return und einem definierten Wert.
 

JavaMeetsBlueJ

Bekanntes Mitglied
Kann mir vielleicht jemand meinen Denkfehler aufzeigen? Solange ich die Textfelder in Reihe mit zahlen von 0 bis 8 ausstatte, funktioniert alles korrekt, auch fehler werden korrekt ausgegeben. Bei Zahlen ab 9 ist das allerdings nichtmehr so. Woran liegt das? Etiche System.out.println() Ausgaben mit den Werten voon Zeile Spalte und Element, sowie den inhaltlichen Werten der Spalte in Zeile XY und inhaltlichem Wert des betreffenden Elements haben mir nicht weiter geholfen, sondern eher verwirrt. Wenn irgendeine Zahl in dem System größer ist als 8 kann der Rest sien wie er will und ich bekomme von der Methode true.


[EDIT]Man bin ich doof. Die Zahl kommt halt nicht doppelt vor und deshalb wird nichts gemeldet[/EDIT]
MfG
 
Zuletzt bearbeitet:

timbeau

Gesperrter Benutzer
"..ist nicht mehr so" ist keine Fehlermeldung!

BTW: Das mit dem "Zwischenspeichern" ist keine Frage von Lust & Laune sondern eine Frage der Modularität. Und verhindert Spaghetticode bei dem man das Kotzen kriegt wenn man Fehler sucht.
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Regex zum Integer.parseInt Java Basics - Anfänger-Themen 4
W Fehler bei Integer.parseInt() Java Basics - Anfänger-Themen 4
J Datentypen Nachbilden der Methode Integer.parseInt Java Basics - Anfänger-Themen 5
T Integer.ParseInt Fehlerausgabe Java Basics - Anfänger-Themen 9
M Integer.parseInt String zerlegen Java Basics - Anfänger-Themen 6
M x = Integer.parseInt(in.readLine()) Java Basics - Anfänger-Themen 16
A int wert = Integer.parseInt(zeile); Java Basics - Anfänger-Themen 11
S Integer.parseInt Java Basics - Anfänger-Themen 4
G Strings addieren (ohne Integer.parseInt) Java Basics - Anfänger-Themen 9
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
MoxMorris Integer.MAX_VALUE und Double.MAX_VALUE Unterschied Java Basics - Anfänger-Themen 3
Jul1n4tor Scanner error bei Eingabe die kein Integer ist Java Basics - Anfänger-Themen 4
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
volcanos Addition -> List<Integer> mit Arrays.asList() versus List<Integer>ArrayList<>() Java Basics - Anfänger-Themen 14
JavaBeginner22 Integer in String umwandeln Java Basics - Anfänger-Themen 7
sserio printf integer formatting Java Basics - Anfänger-Themen 17
M Unterschied Integer.toString(x) und x.toString() Java Basics - Anfänger-Themen 22
H Uhrzeitespanne in Integer Wert umrechnen Java Basics - Anfänger-Themen 1
T Java Integer multiplizieren Java Basics - Anfänger-Themen 6
H Fehler bei integer Division Java Basics - Anfänger-Themen 28
D Methoden Plathhalter für Integer in einer Methode Java Basics - Anfänger-Themen 19
StevenGG Java swing "New Integer" Java Basics - Anfänger-Themen 5
C Integer in Vierer-Zahlblöcke aufteilen Java Basics - Anfänger-Themen 11
L integer Java Basics - Anfänger-Themen 6
Zeppi Integer umschreiben Java Basics - Anfänger-Themen 5
rafi072001 Integer Anomalie Java Java Basics - Anfänger-Themen 7
Eule25 Arbeit mit long und int, Error: integer number too large Java Basics - Anfänger-Themen 2
J Transformation zweier Integer in ein Double Java Basics - Anfänger-Themen 26
M Integer aus aus einer Klasse in andere speichern Java Basics - Anfänger-Themen 12
L Iterieren durch eine ArrayList. Integer Array wird übergeben Java Basics - Anfänger-Themen 17
D Fibonacci overflow integer Java Basics - Anfänger-Themen 8
J Eine Position im String durch einen Integer - Wert teilen Java Basics - Anfänger-Themen 5
S Integer Wert wird nicht übernommen Java Basics - Anfänger-Themen 2
V int zu Integer und String Java Basics - Anfänger-Themen 6
H Datentypen Was für eine Format verbirgt sich hinter dem Integer-Wert 053? Java Basics - Anfänger-Themen 2
L Baum aus Integer Liste erstellen Java Basics - Anfänger-Themen 0
J Problem beim vergleich von zwei Integer Java Basics - Anfänger-Themen 3
S Vergleichen ob der Integer der benutzt eingeben werden soll überhaupt ein int ist Java Basics - Anfänger-Themen 1
S Letzte Zahl eines Integer auslesen? Java Basics - Anfänger-Themen 3
K String in Integer umwandeln Java Basics - Anfänger-Themen 4
G Überprüfen ob alle Ziffern von 1-9 in einem Integer vorhanden sind Java Basics - Anfänger-Themen 6
D integer negativen Wert abspeichern Java Basics - Anfänger-Themen 3
A Mit JComboBox Ergebnis einen Integer aus einer anderen Klasse aufrufen. Java Basics - Anfänger-Themen 2
J Methoden Moving a n integer matrix Java Basics - Anfänger-Themen 3
R Eingabe String umwandeln zu Integer Werten Java Basics - Anfänger-Themen 8
M Input/Output Java Swing: Prüft ob Text aus JTextField ausschließlich Integer enthält Java Basics - Anfänger-Themen 15
J Erhöhen eines Values als Integer bei gleichen Keys in HashMap Java Basics - Anfänger-Themen 12
CptK Datentypen Integer ArrayList sortieren Java Basics - Anfänger-Themen 2
J Methoden Equals Methode für Integer und Objekte überschreiben? Java Basics - Anfänger-Themen 9
CptK Bestimmten Integer Wert aus Array filtern Java Basics - Anfänger-Themen 2
L String in Integer umwandeln Java Basics - Anfänger-Themen 3
K Datentypen String zu Integer parsen Java Basics - Anfänger-Themen 2
B Liste von Integer -> Nächster Wert bekommen Java Basics - Anfänger-Themen 5
S Integer aus Array filtern Java Basics - Anfänger-Themen 4
F Referenzvariable vom Typ "Integer" definieren. (Klausuraufgabe) Java Basics - Anfänger-Themen 5
M set Integer bzw. set null mit SQL DB Java Basics - Anfänger-Themen 9
H Bubblesort-Zwei Integer auf Dekade vergleichen. Java Basics - Anfänger-Themen 6
B Variablen integer im Array Java Basics - Anfänger-Themen 5
C Liste o.ä. erstellen mit <Integer, <Integer, String> Java Basics - Anfänger-Themen 7
R Kompletten String umwandeln in Integer Java Basics - Anfänger-Themen 10
H 32-Bit Zahl (Integer) in eine IPv4 Adresse umwandeln? Java Basics - Anfänger-Themen 2
Orkanson Datentypen Integer in String umwandeln/hinzufügen Java Basics - Anfänger-Themen 3
O Datentypen Integer mit führender Null Java Basics - Anfänger-Themen 13
M Argument in Integer verwandeln und das Doppelte davon printen Java Basics - Anfänger-Themen 9
D Fehler: String zu Integer Java Basics - Anfänger-Themen 7
L (Integer) Liste nach aufsteigender Summe der Ziffern sortieren (mit Bedingung) Java Basics - Anfänger-Themen 8
b1ck Integer initialisieren bei do-while-Schleife Java Basics - Anfänger-Themen 11
E Integer und Array übergeben Java Basics - Anfänger-Themen 9
R String in Integer Java Basics - Anfänger-Themen 11
D Komischer Fehler nach <Integer> List Java Basics - Anfänger-Themen 2
J Integer in Array einlesen Java Basics - Anfänger-Themen 14
J Warum ist das ein Unterschied (Integer / int) Java Basics - Anfänger-Themen 2
H Integer in Datei schreiben Java Basics - Anfänger-Themen 2
B OOP Cannot instantiate the type AuDList<Integer> Java Basics - Anfänger-Themen 18
3 ArrayList Integer Wrapper Klasse als Ersatz für normale Arrays Java Basics - Anfänger-Themen 10
K Methoden Integer runden/aufrunden Java Basics - Anfänger-Themen 2
E Erste Schritte Lower Bounded Wildcards <? super Integer> Java Basics - Anfänger-Themen 1
M Datentypen Integer und Float Konflikt Java Basics - Anfänger-Themen 3
J Integer-Werte in Array ein- bzw. auslesen Java Basics - Anfänger-Themen 7
T Integer Wert in andere Methode übergeben Java Basics - Anfänger-Themen 2
N Probleme bei Speicherung eines Integer-Array in Datei speichern Java Basics - Anfänger-Themen 3
C Zwei Integer Arrays "kombinieren" Java Basics - Anfänger-Themen 10
D Integer Fehlermeldung exception Java Basics - Anfänger-Themen 4
M Höchster Integer aus 9 Zahlen Java Basics - Anfänger-Themen 13
I Klassen Integer von BL in GUI übergeben | Fehler Java Basics - Anfänger-Themen 4
T Integer-Objekt über Hash-Funktion in Array ablegen Java Basics - Anfänger-Themen 1
S Integer/Value-Paar in Prio-Queue ohne Comparator Java Basics - Anfänger-Themen 5
D Datentypen Ein Integer Feld in einen String wandeln ohne Nullenunterdrückung Java Basics - Anfänger-Themen 6
R integer zahlenfolge speichern, ausgeben Java Basics - Anfänger-Themen 1
L Summer aller Integer-Zahlen im Intervall [x,y] Java Basics - Anfänger-Themen 6
K ArrayList<Integer> problem Java Basics - Anfänger-Themen 3
L Vom Benutzer eingebene Integer addieren und ausgeben. Java Basics - Anfänger-Themen 11
S integer absteigend sortieren Java Basics - Anfänger-Themen 2
S ArrayList<ArrayList<Integer>> sortieren Java Basics - Anfänger-Themen 3
T Variablen Integer in Stmt Java Basics - Anfänger-Themen 13
B gemischter string zu integer Java Basics - Anfänger-Themen 22
R Big Integer Java Basics - Anfänger-Themen 8
B Erste Schritte Integer Eingabe über Scanner mit Abfangen von Eingabefehlern Java Basics - Anfänger-Themen 3
B Variablen Wertezuweisung bei integer Java Basics - Anfänger-Themen 5
J Integer Werte in Array einlesen Java Basics - Anfänger-Themen 6

Ähnliche Java Themen

Neue Themen


Oben