Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Hallo ich bin ein absoluter Neuling in Java und befasse mich das erste Mal mit Objektorientierung.
Ich möchte die Länge eines Arrays über einen Konstruktor erzeugen und anschließend Initialisieren.
Java:
public class Library {
private int initialCapacity;
private int capacityIncrement;
public Library (int initialCapacity, int capacityIncrement) {
this.initialCapacity = initialCapacity;
this.capacityIncrement = capacityIncrement;
}
private Book [] bookmanager = new Book [initialCapacity];
public void print() {
System.out.println(bookmanager.length);
}
}
Mein Problem ist, dass die Länge des Arrays immer Null bleibt auch wenn ich jetzt z.B. in einer anderen Klasse ein Library Objekt in der Art
Code:
Library bla = new Library (5, 1);
anlege.
Könnt ihr mir vielleicht sagen was ich falsch mache? Mich irritiert, dass wenn ich stattdessen
Java:
public void print() {
System.out.println(initialCapacity);
}
Habe eine Klasse Book.java die Titel, Autor etc. eines Buches erfasst und in Library sollen dann später Bücher hinzugefügt/gelöscht werden können die dann mit dem Array verwaltet werden. Eigentlich bietet sich ja hier dann ArrayList an aber ich soll nur einen Array nehmen und diesem zuerst die Länge von initialCapacity geben, wenn der Array voll ist soll er dann initialCapacity + capacityIncrement bekommen.
Habe eine Klasse Book.java die Titel, Autor etc. eines Buches erfasst und in Library sollen dann später Bücher hinzugefügt/gelöscht werden können die dann mit dem Array verwaltet werden. Eigentlich bietet sich ja hier dann ArrayList an aber ich soll nur einen Array nehmen und diesem zuerst die Länge von initialCapacity geben, wenn der Array voll ist soll er dann initialCapacity + capacityIncrement bekommen.
Ich hätte es befürchtet ...
Du kannst aber bei Erzeugen des Klassenobjekt (... new book ...) kein Array anlegen.
Du kannst allenfalls in einer Schleife n Objekte erzeugen und die in einer Liste, einem Vector, einer Map, ... verwalten
Deklariere in der Klasse eine entsprechende Struktur und entsprechende Getter-/Setter-Funktionen. Dann kannst Du von aushalb drauf zugreifen.
Am besten postest Du mal diese Klasse!
Du könntest das erstmal so machen (siehe unten). Aber da du ja ein Array nehmen sollst ist das ganze nicht dynamisch. Du müsstest also in deiner addBook (oder so) Methode immer erst die nächste freie Stelle im Array finden (wo noch kein Book liegt) bevor du das neue Book da reinsetzen kannst. Sollte alles belegt sein musst du ein neues Array erzeugen, alle vorhandenen Books aus dem alten Array hineinsetzen und dann erst das neue Book.
Java:
public class Library {
private int initialCapacity;
private int capacityIncrement;
private Book [] bookmanager;
public Library (int initialCapacity, int capacityIncrement) {
this.initialCapacity = initialCapacity;
this.capacityIncrement = capacityIncrement;
this.bookmanager = new Book [initialCapacity];
}
public void print() {
System.out.println(bookmanager.length);
}
}
Ach Mensch super vielen vielen Dank, bin natürlich nicht auf die Idee gekommen die Länge im Konstruktor zu übergeben. Ja genau und so wie du das beschreibst hatte ich das auch für das Hinzufügen der Bücher geplant. Danke nochmals für die schnelle Hilfe ;-)