Don P: Filterung eines mehrdimensionalen Arrays

Beitrag lesen

Hallo,

die Filterung funktioniert nicht

Woran erkennst du das?
Anders gefragt: Was erwartest du vom Temp-Array und was steht statt desssen drin?
Die Tabelle hat alle Spalten, schön. Aber *was* stimmt nicht mit den Reihen? Sind sie alle leer? Sind sie teilweise leer? enthalten sie falsche Daten? So ist es wirklich mühsam, dir zu helfen, Mensch.

Eines solltest du jedenfalls klar stellen, dein Code:

  
       if(Film[i].Titel.substring(0,1)==Kriterium)  
         Temp[Zaehler]={DVD_Nr:Film[i].DVD_Nr,  
                        Titel:Film[i].Titel,  
                        Inhalt:Film[i].Inhalt,  
                        Genre:Film[i].Genre,  
                        FSK:Film[i].FSK};  
       Zaehler += 1;  

bedeute dasselbe wie:

  
       if(Film[i].Titel.substring(0,1)==Kriterium){  
         Temp[Zaehler]={DVD_Nr:Film[i].DVD_Nr,  
                        Titel:Film[i].Titel,  
                        Inhalt:Film[i].Inhalt,  
                        Genre:Film[i].Genre,  
                        FSK:Film[i].FSK};  
       }  
       Zaehler += 1;  

Somit entstehen Lücken im Array "Temp", nämlich immer dann, wenn die if-Bedingung nicht zutrifft.

Wenn du das nicht willst, schreibe:

  
       if(Film[i].Titel.substring(0,1)==Kriterium){  
         Temp[Zaehler]={DVD_Nr:Film[i].DVD_Nr,  
                        Titel:Film[i].Titel,  
                        Inhalt:Film[i].Inhalt,  
                        Genre:Film[i].Genre,  
                        FSK:Film[i].FSK};  
         Zaehler += 1;  
       }  

dedlfix hat dich doch schon darauf hingewiesen.

Um solche Fehlerquellen auszuschließen, sollte man immer die Klammern if(...){...} notieren.

Die Variable "Zaehler" habe ich integriert, damit das Array "Temp" hochgezählt wird, die for-Schleife mit "i" durchläuft das Array "Film".

Ja, und bei jedem Durchlauf wird auch "Zähler" um 1 erhöht, so dass du gar keine separate Variable "Zähler" brauchst, weil ihr Wert immer identisch mit dem von "i" ist, siehe dedlfix' Antwort.

Gruß, Don P