# Geschachtelte For-Schleife: Äußere Schleife wird nur einmal durchlaufen!?



## Crasher (29. Apr 2010)

Hallo,

ich bin gerade dabei mir eine Programm zu schreiben, mit dem ich meine DVD-Sammlung verwalten kann.
Jetzt hänge ich bei der Sortierung bzw. beim Filtern der Daten.

Hier mein Code:

```
for(int i=0; i<model.size();i++){
    System.out.println("Äußere - Schritt: " + i + " ()SOLL:" + model.size());

      for(int j=1;j<(cast.length);j++){
      System.out.println("Innere - Schritt: " + j + " ()SOLL:" + cast.length);

        if(allMovies[i].equals(movie[j][0])){
          model.clear();
          //------Sortierung Genre---------
          if(cb_genre.getSelectedItem().equals(cb_genre.getItemAt(1))){
            if(movie[j][3].equals(cb_genre.getItemAt(1))){
              model.addElement(movie[j][0]);
            }
          }
          if(cb_genre.getSelectedItem().equals(cb_genre.getItemAt(2))){
            if(movie[j][3].equals(cb_genre.getItemAt(2))){
              model.addElement(movie[j][0]);
            }
          }
          if(cb_genre.getSelectedItem().equals(cb_genre.getItemAt(3))){
            if(movie[j][3].equals(cb_genre.getItemAt(3))){
              model.addElement(movie[j][0]);
            }
          }
          if(cb_genre.getSelectedItem().equals(cb_genre.getItemAt(4))){
            if(movie[j][3].equals(cb_genre.getItemAt(4))){
              model.addElement(movie[j][0]);
            }
          }
          if(cb_genre.getSelectedItem().equals(cb_genre.getItemAt(5))){
            if(movie[j][3].equals(cb_genre.getItemAt(5))){
              model.addElement(movie[j][0]);
            }
          }
          if(cb_genre.getSelectedItem().equals(cb_genre.getItemAt(6))){
            if(movie[j][3].equals(cb_genre.getItemAt(6))){
              model.addElement(movie[j][0]);
            }
          }
          if(cb_genre.getSelectedItem().equals(cb_genre.getItemAt(7))){
            if(movie[j][3].equals(cb_genre.getItemAt(7))){
              model.addElement(movie[j][0]);
            }
          }
        }
      }
    }
  }
```

Die äußere Schleife durchläuft die nach der Suche übrig gebliebenen Filmtitel.
Die Innnere Schleife soll jeden dieser Titel wieder mit den gesamten hinterlegten Filmen abgleichen (in einem CSV-File hinterlegt) um nach dem Genre zu Filtern.

Mein Problem ist aber, dass die äußere Schleife nur einmal durchlaufen wird und somit auch die innere Schleife nur einmal komplett ausgeführt wird. Warum? Ich verzweifel bald ;(

Ich habe mir die Schleifendurchgänge mal ausgeben lassen und bekam folgendes raus:
Äußere - Schritt: 0 ()SOLL:2
Innere - Schritt: 1 ()SOLL:3
Innere - Schritt: 2 ()SOLL:3
Innere - Schritt: 3 ()SOLL:3

Hier wird deutlich, dass die äußere Schleife nur einmal durchlaufen wird.



```
model.size()
```
(Die übrig gebliebenen Filme) ist in diesem Falle "2" und 
	
	
	
	





```
cast.length
```
 (Die gesamten aus dem CSV), "3".

Ich danke euch schon mal für eure Hilfe.:toll:

Gruß
Crasher

P.S. Die vielen If-Bedingungen kommen auch noch in eine Schleife. Habe diese erstmal wieder so hingeschreiben, da ich dachte das dort das Problem lag.


----------



## nixnick (29. Apr 2010)

[JAVA=7]if(allMovies_.equals(movie[j][0])){
          model.clear();
          //------Sortierung Genre---------
[/code]
da ist der bösewicht, denn for überprüft size bei jedem durchlauf erneut und damit löschst du alles aus model.
 ;D_


----------



## srea (29. Apr 2010)

In Zeile 8 machst du ein

```
model.clear()
```
Also wirfst du alle Elemente aus der Collection (ich nehme an model ist eine).

Edit: zu lahm


----------



## Crasher (30. Apr 2010)

Vielen Dank jungs.
Jetzt läufts :toll:


----------

