Größe eines Arrays in Konstruktor übergeben (Java)
Hallo :)
Ich hab eine Java-Frage. Und zwar versuche ich gerade diese Aufgabe zu lösen: http://wiki.freitagsrunde.org/Javakurs/%C3%9Cbungsaufgaben/Studentendatenbank
bei Teilaufgabe 5 komme ich nicht weiter... es scheitert daran, dass ich nicht weiß, wie man die Größe eines Arrays im Konstruktor übergeben soll... Also was ich später in der Main machen muss, ist klar. Nur komme ich in der Klasse StudentDatabase nicht weiter.
Da steht bis jetzt das drinnen:
**public class StudentDatabase
{
int Anzahl;
Studenten Daten[]= new Studenten[Anzahl];
StudentDatabase(int A)
{
this.Anzahl=A;
Daten[A];
/* hier kriege ich die Fehlermeldung Syntaxerror insert "AssignmentOperator Expression" to complete Expression*/
} } **
für hilfreiche Antworten wäre ich wirklich sehr dankbar!
Viele Grüße :)
4 Antworten
Hallo,
ein paar Grundlegende Dinge. Membervariablen sollte man in der Regel nicht gleich definieren sondern nur deklarieren. Die definition (Zuweisung eines Wertes an die Member Variable) sollte in der Regel frühestens im Konstruktor erfolgen.
Weiterhin kann die Zeile
Studenten Daten[] = new Studenten[Anzahl];
nicht funktionieren, da zu dem Zeitpunkt dem Compiler nocht nicht bekannt ist welchen Wert 'Anzahl' hat.
Bei der Deklaration der Member Variablen schreibst Du erstmal nur hin
Studenten Daten[];
und erst im Konstruktor schreibst Du dann
this.Daten = new Studenten[Anzahl];
Auch wenn in der Aufgabenstellung von Arrays gesprochen wird, ist es in der Praxis eher unüblich Arrays zu verwenden, ausser in Spezialfällen in dennen Du bereit im vorherein weißt wie viele Elemente das Array haben wird und wenn Du speziell möglichst schnell auf bestimmte bekannte Index Positionen zugreifen willst, wass bei einer Menge an Studenten eher unwarscheinlich ist. In der Praxis verwendet man viel häufiger Collection Klassen (Listen, Verkettete Listen, Hash Maps, ...). Aber das nur am Rande. Da Du noch relativ am Anfang bist was das lernern angeht, wirst Du eh noch früher oder später darauf stoßen.
Noch viel Spaß beim lernen.
Statt
this.Anzahl=A;
schreibst du
Daten[] = new Studenten[A];
Und Variablen fangen IMMER mit einem kleinen Buchstaben an, Klassen immer mit einem großen, änder das bitte :)
Ansonsten kein Problem, noch weitere Fragen? :D
dass ich nicht weiß, wie man die Größe eines Arrays im Konstruktor übergeben soll...
Woher soll man die auch wissen? Das wissen weder die Fraganten noch deine StudienkollegInnen.
Wenn du ein Schachbrett als Array darstellst, weißt du, dass es ein 2D-Array aus 8 x 8 Feldern ist. Bei vielen anderen Arrays kennt man deren Größe nie.
Also nimmt man ein mutable Array und muß den Code ergänzen, der es wachsen bzw. schrumpfen lässt. Das ist dann so …
Ich versteh's nicht ganz. Die Größe (Länge) eines Arrays gibt dir
meinArray.length
Arrays initialisieren tust du mit
meinArray = new MeineKlasse[laenge];
Dankeschön :]