2017-04-03 480 views
-2

我有2個類:產品和房間。 我希望用戶能夠說數組有多大,創建一個Object Room並輸入一個int。使用構造函數初始化數組 - Java

public class Room{ 
    private int n; 
    private int count = 0; 
    Product [] space = new Product[n]; 

public Room(int n){ 
    this.n = n; 
} 

爲什麼犯規的構造函數創建一個與輸入數組n,我給他? 任何想法我做錯了什麼?

+0

在字段中創建數組時,必須爲他提供一個常量而不是變量。如果您需要聲明構造函數傳遞的長度爲N的數組,請在構造函數中進行如下操作: 'Product [] space;'是字段 'public Room(int n){this.n = n; space = new Product [n];}' – dpassy

+0

爲什麼要這樣呢?你明確地告訴他用'n'的默認值初始化'space'。所以問題是:爲什麼?爲什麼你這樣做,爲什麼不使用在構造函數中初始化它呢? – Tom

+0

爲什麼人們不滿意這個問題?在java中找到newb並尋找答案,如果你無法在互聯網上找到答案,這是不好的... – Karuw

回答

10

陣列被構造體之前進行初始化,當n仍然0(默認設置),因此獲得一個0長度。

你需要在構造函數的身體將其初始化:

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

只是嘗試

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

你不需要爲額外的字段(ñ計數),只是給大小,並在構造函數中初始化數組......其餘信息位於數組對象本身的內部(array.lenght等)

public class Room{ 

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

您需要初始化中的數組的構造函數。

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

否則,當你在外面做,n0默認值,並創建數組的大小爲0也。基本沒用。