Exception in thread "AWT-EventQueue-0"

MarDaiBre

Aktives Mitglied
Hallo,

ich habe mal wieder ein kleines Problem:
Ich übergebe einer Methode einen String, der 7 Werte getrennt durch + beinhaltet. Dieser String soll durch splitString getrennt und in einzelne Strings gespeichert und in einen Vector übertragen werden. Sind alle Werte belegt, funktioniert es problemlos (bsp.: "Wert1+Wert2+Wert3+Wert4+Wert5+Wert6+Wert7"). Nur ist es auch möglich, dass der letzte Wert nicht belegt ist (bsp.: "Wert1+Wert2+Wert3+Wert4+Wert5+Wert6+").

Bei der letzten Möglichkeit streikt er dann bei splitString und gibt mir eine Exception in thread "AWT-EventQueue-0" aus (java.lang.ArrayIndexOutOfBoundsException: 6). Ich verstehe nicht, wo das Problem ist, zumal ich bereits sämtliche Troubleshooting-Möglichkeiten probiert habe. Selbst mit "Wenn splitString[6].equals(null), dann importiere ein Leerfeld" funktioniert es nicht. Das Auslesen eines leeren splitStrings[6] geht auch nicht. Woran liegt das?

Java:
String risikoSet = v.getDaten(); // String mit den 7 Werten, die durch + getrennt sind
String[] setSplit = risikoSet.split("\\+");
				
Vector<String> row = new Vector<String>(7);
				
row.addElement(setSplit[0]);
row.addElement(setSplit[1]);
row.addElement(setSplit[2]);
row.addElement(setSplit[3]);
row.addElement(setSplit[4]);
row.addElement(setSplit[5]);
row.addElement(setSplit[6]); // hier Streikt er dann, aber nur, wenn der 7. Wert nicht vorhanden ist
                
swingTabelleModelVerursacher.addRow(row);

Danke im Voraus!
 
Das Array setSplit ist nicht lang genug. Du solltest die Schleife nicht abrollen sondern mit einer for - Schleife über setSplit iterieren.

Nimm lieber eine ArrayList. Die ist moderner.
Mit Collections.asList() kannst du dein Array direkt in eine List umwandeln.
 
Wenn man zu faul ist google zu verwenden...

setSplit ist wohl eben nicht 7 Elemente groß. Kannst du dir ja mal ausgeben lassen.
 
Danke Gucky! Ich habe es gerde probiert, bekomme aber nun einen ähnlichen Fehler:
Code:
Exception in thread "AWT-EventQueue-0" java.lang.IndexOutOfBoundsException: Index: 6, Size: 6
	at java.util.ArrayList.rangeCheck(Unknown Source)
	at java.util.ArrayList.get(Unknown Source)
	at risikoverwaltung.view.LadeGUI$GUITableVerursacher.setElements(LadeGUI.java:307)
	at risikoverwaltung.view.LadeGUI.initFromModelVerursacher(LadeGUI.java:1715)
	at risikoverwaltung.view.LadeGUI.actionPerformed(LadeGUI.java:1908)
	at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)

Hier das angepasste Coding:
Java:
String risikoSet = v.getDaten();
ArrayList<String> split = new ArrayList<String> (Arrays.asList(risikoSet.split("\\+")));
				
Vector<String> row = new Vector<String>(7);
				
row.addElement(split.get(0));
row.addElement(split.get(1));
row.addElement(split.get(2));
row.addElement(split.get(3));
row.addElement(split.get(4));
row.addElement(split.get(5));
row.addElement(split.get(6));
 
swingTabelleModelVerursacher.addRow(row);

@njans: Nun ich habe ja schon eine if-Abfrage zwischengeschaltet, aber da hat es auch nicht geklappt:
Java:
if(splitSet[6].equals(null) || splitSet[6].equals(""))
      row.addElement("");

else
      row.addElement(setSplit[6]);

Die Ausgabe von risikoSet sieht wiefolgt aus: "Wert1+Wert2+Wert3+Wert4+Wert5+Wert6+". Setzt er denn splitSet[6] nicht gleich null, wenn es leer ist? Wenn ja, dann müsste doch die if-Abfrage funktionieren...
 
Zuletzt bearbeitet:
Wieso sollte er denn splitSet[6] setzen wenn kein 7test Element da ist? Dann müßte er ja auch splitSet[7], splitSet[8] bis splitSet[unendlich] setzen. Woher soll der denn Wissen, dass Du 7 Elemente erwartest? Computer können zwar einiges aber sicher nicht Wahrsagen.

Gruß

Claus
 
Oh Mann, jetzt geht es *_* Ich habe überhaupt nicht an eine for-Schleife gedacht, wie Gucky es empfohlen hat. Danke für eure Hilfe! Nun kann ich endlich weiter machen =D
 

Zurück
Oben