Problem mit if-Anweisung

spearmint

Mitglied
Hallo,

ich hab ne Frage zur einer if-Anweisung und zwar.

Java:
				if(((ArrayList) layers.get(i)).size() > 4) {
					int index = ((ArrayList) layers.get(i)).size();
					if((((ArrayList) layers.get(i)).get(index)) == (((ArrayList) layers.get(i)).get(j)))  {
						s += "  > SRS: " + ((ArrayList) layers.get(i)).get(j) + "\n\n";
					}	
				} else {
					System.out.println("cute");
				}
Davor kommen noch 2 for-Schleifen aus denen sich i und j ergeben.

Wenn bei if(((ArrayList) layers.get(i)).size() > 4) das hier ((ArrayList) layers.get(i)).size() zum Beispiel 5 ist, dürfte es doch nicht durchlaufen oder?

Weil ich das Problem habe, dass meine ArrayList and der stelle (i) manchmal 4 und manchmal 5 Elemente hat.

Und ich möchte nun, dass es mir wenn ich 4 Elemete habe 4 ausgibt und wenn es 5 sind dann eben 5.

Aber das geht irgendwie nicht, weil es immer " java.lang.IndexOutOfBoundsException: Index: 5, Size: 5" sagt.

Wie kann ich das nun schreiben, dass es immer die richtige Anzahl an Elementen ausgibt?

Vielen Dank im Voraus
 
Das ganze sieht recht verwirrend aus:

1. Die erste Schleife startet nur wenn die ArrayList länger als 4 ist. Du wolltest ja aber glaub genau das gegenteil, oder?

2.
Java:
int index = ((ArrayList) layers.get(i)).size();
                    if((((ArrayList) layers.get(i)).get(index))
der Teil geht nicht. Die size() einer List ist immer eins länger als der Index. Da der Index bei null startet.
Ist genau wie bei einem Array.
 
Java:
int arrayLength = ((ArrayList) layers.get(i)).size();

if(arrayLength  > 4) // Es gibt mehr als 4 Elemente
{
   int index = arrayLength -1;
   if((((ArrayList) layers.get(i)).get(index)) == (((ArrayList) layers.get(i)).get(j))) 
   {
       s += "  > SRS: " + ((ArrayList) layers.get(i)).get(j) + "\n\n";
   }   
} 
else 
{
   System.out.println("cute");
}
Hab habs mal etwas umgebaut, so finde ich es etwas übersichtlicher. Zu beachten ist, dass index die länge minus eins ist! Mich wundert allerdings, dass du (ArrayList) layers.get(i)).get(j)) zu einer ArrayList castest. Hast du da eine ArrayList<ArrayList<..typ..>> ?
 
Vielen Dank für die Antworten und die Hilfe. Ich habe den Fehler gefunden und zwar war es ein kleiner blöder Logikfehler meinerseits. if(((ArrayList) layers.get(i)).size() > 4) hier muss eine 5 und keine 4 stehen. Es waren 6 Elemente inder Liste nicht 5.
 

Neue Themen


Zurück
Oben