Einträge einer JList in einer For-Schleife auslesen

Lautsprecher

Erfahrenes Mitglied
Hallo,

ich habe für Profis wahrscheinlich mal wieder eine Simple Frage. In meiner Anwendung verwende ich eine JList, die ich mit DefaultListModel befülle.

Beispiel:
Code:
public DefaultListModel lmodel = new DefaultListModel();
 lmodel.addElement(e.getActionCommand());
  jListFC.setModel(lmodel);

Der User kann maximal 4 Einträge in die JList schreiben. Die Einträge möchte ich später in einer for-Schleife auslesen und in eine Datenbank schreiben.

Folgendes habe ich schon probiert. Funktioniert leider nicht:

Code:
k = jListFC.getModel().getSize();
System.out.println("Wieviel Listeneinträge sind da?" + k);
if (k >= 1)
{
       for (int i = 1; i <= k; i++)
      {
								String fehlerdummy = null;
	fehlerdummy = lmodel.getElementAt(i).toString();
	oder fehlerdummy = jListFC.getModel().getElementAt(i).toString();
    }
}

Ich glaube das es auch mit dem Zähler in der for-Schleife zu tun hat. Dazu eine Frage. Der erste Eintrag in der JList bekommt doch den Index 0?

bei int i = 1 bekomme ich eine IndexOutOfBoundsException

setze ich int i = 0 scheint er nicht einmal mehr in die Schleife zu gehen
 
Zuletzt bearbeitet:
Hallo,

ist klar, dass er nicht in die for-Schleife geht. Schau dir mal die Bedingung an
Code:
 for (int i = 1; i == k; i++)

Der erste Parameter ist das Initialisieren der Zählvariable. Der zweite Parameter sagt aus, wie lange die Schleife laufen soll(boolischer Wert, true Schleife läuft/ false schleife läuft nicht). Der dritte Parameter ist das Hochzählen.
Die Bedingung, dass deine Schleife läuft sagt aus, dass die Schleife laufen soll, solange i gleich k ist. D. h. wenn i = 1 ist und k = 1 ist läuft die Schleife. Wenn i = 0 ist und k = 1 ist, ist i != k, also läuft die Schleife nicht.
Ich denke mal, dass es bei dir heißen soll i<=k. Die Schleife soll solange laufen wie i kleiner oder gleich k ist.

MFG

zEriX
 
Hallo Zerix,

danke Dir, habe es auch gerade gesehen, yepp es soll i <= k heißen

Habe es jetzt mal ausgebessert. Nur leider bekomme ich immer noch die Selbe Fehlermeldung!
 
i < k muss es heissen.

Denn wenn die Anzahl der Elemente 10 ist geht der Index ja von 0 bis 9 also entsprechend von i = 0 bis i < 10 (=9).
 
@zeja
stimmt, hab ich oben falsch gesagt.

Deine Schleife muss natürlich auch bei 0 beginnen. Bei Java wird fast überall mit 0 begonnen.

Also so müsste es funktionieren
Java:
for (int i = 0, size = lmodel.getSize(); i < size; i++)
{
	String fehlerdummy = null;
	fehlerdummy = lmodel.getElementAt(i).toString();
}

So brauchst du auch die if-Anweisung nicht mehr.



MFG

zEriX
 
Zuletzt bearbeitet:
Hallo,

habe es jetzt hin bekommen. Lag wirklich am Umgang mit den Zählern. Die Programmierung ist zwar jetzt nicht sehr schön. Aber fürs erste reicht es mal.
Der erste Eintrag der JList läuft also mit dem Index 0 los..

Danke
 
@zeja
stimmt, hab ich oben falsch gesagt.

Deine Schleife muss natürlich auch bei 0 beginnen. Bei Java wird fast überall mit 0 begonnen.

Also so müsste es funktionieren
Java:
for (int i = 0, size = lmodel.getSize(); i < k; i++)
{
	String fehlerdummy = null;
	fehlerdummy = lmodel.getElementAt(i).toString();
}

So brauchst du auch die if-Anweisung nicht mehr.



MFG

zEriX


/******************************************************************************************************/
Ja da hast Du recht, wozu die if-Bedingung.... Werde dein Schleifen-Beispiel gleich mal
ausprobieren
Danke
/*******************************************************************************************************/
 
Ich sehe gerade, ich hab da nen copy/paste-Fehler drin.
es muss heißen
Code:
i < size
und nicht
Code:
i < k

MFG

zEriX
 
Zurück