Klassen-Methode will nicht :/



  • Hallo!

    Also ich habe eine Klasse Citylist, die eine Tabelle von City speichert ( City ist auch eine Klasse, in der ein Name und eine Bevölkerung drin steht ). Die Klasse Citylist hat eine Methode, die eine City hinzufügt: public void add(City c); Bei dieser Methode wird Citylist einfach um 1 größer.
    Wenn ich im Hauptprogramm eine City einlese und die Funktion aufrufe, hat die ganze Tabelle Citylist den zuletzt eingelesen Namen und Bevölkerung..

    Hier die add-Methode:

    public void add(City c) {
    		City[] buffer = new City[citylist.length+1];
    
    		for(int i=0;i<citylist.length;i++) {
    			buffer[i]=citylist[i];
    		}
    
    		buffer[citylist.length]=c;
    
    		citylist=new City[citylist.length+1];
    
    		for(int i=0;i<citylist.length;i++)
    			citylist[i]=buffer[i];
    	}
    

    Ich hoffe, jemand findet meinen Fehler.
    Danke schonmal im Voraus!

    Lg
    SFandler



  • Ich denke in diesem Fall wäre es besser eine Collection anstelle eines Arrays zu nehmen.
    Also nimmst du als Attribut für Citylist...

    ArrayList<City> citylist;
    [...]
    citylist = new ArrayList<City>();
    

    Die Klasse ArrayList hat bereits eine Methode add, der du als Parameter ein City-Objekt übergeben kannst und die musst du einfach nur aufrufen anstatt eine eigene zu schreiben.

    Nach der Initialisierung von citylist kannst du dann einfach nach und nach eine Stadt nach der anderen mit add einfügen.



  • List verwenden ist gut, aber ich vermute das eigentliche Problem liegt außerhalb der add-Methode. Zeig mal den Code um den Aufruf - insbesondere wie du die Daten einliest.



  • Tausch gegen die letzte for-Schleife mit diesen Code: citylist=buffer;


Anmelden zum Antworten