2017-04-03 4 views
-2

Ich habe 2 Klassen: Produkt und Raum. Ich möchte der Benutzer in der Lage sein zu sagen, wie groß das Array sein soll, mit einem Objekt Raum erstellen und geben Sie einen Int.Array mit Konstruktor initialisieren - Java

Warum erstellt der Konstruktor das Array nicht mit der Eingabe n, gebe ich ihm? Irgendwelche Ideen, was ich falsch mache?

+0

Wenn Sie Array in Feld erstellen, müssen Sie ihm eine Konstante, keine Variable bereitstellen. Wenn Sie ein Array der Länge N deklarieren müssen, übergeben Sie es im Konstruktor wie folgt: 'Product [] Leerzeichen;' ist das Feld 'public Raum (int n) {this.n = n; Leerzeichen = neues Produkt [n];} ' – dpassy

+0

Warum sollte es? Sie ___explicitly___ haben ihm gesagt, dass er 'space' mit dem Standardwert' n' initialisieren soll. Die Frage ist also: Warum? Warum tun Sie das und warum verwenden Sie es nicht einfach im Konstruktor? – Tom

+0

Warum haben Leute die Frage abgelehnt? Ist es schlecht, ein Newb in Java zu sein und nach Antworten zu suchen, wenn Sie die Antwort im Internet nicht finden können ... – Karuw

Antwort

10

Das Array wird vor dem Konstruktorkörper initialisiert, wenn n immer noch 0 (standardmäßig) ist, so erhält es eine 0 Länge.

Sie müssen es in den Körper des Konstruktor initialisieren:

public Room(int n){ 
    this.n = n; 
    this.space = new Product[n]; 
} 
1

nur versuchen,

public Room(int n){ 
    this.n = n; 
this.space = new Product[n]; 
} 
1

Sie brauchen nicht zusätzliche Felder für die (n oder Zählung), nur das geben Größe und init das Array im Konstruktor ... der Rest der Informationen ist innerhalb des Array-Objekts selbst (array.length etc)

public class Room{ 

    Product [] space; 
    public Room(int n){ 
     space = new Product[n] 
    } 
} 
1

Sie müssen das Array innerhalb des Konstruktors initialisieren.

public Room(int n) { 
    this.n = n; 
    this.space = new Product[n]; 
} 

Andernfalls, wenn Sie es tun außerhalb, hat n einen Standardwert von 0 und die erzeugte Array ist auch der Größe 0. Grundsätzlich nutzlos.

Verwandte Themen