2016-11-13 49 views
0

*填充方法旨在從另一個類中調用,該類具有包含選項的菜單,其中一個選項爲填充選項。無法添加到由對象組成的私有ArrayList屬性

我想添加二十六個huntsingercard對象到構造函數外的huntsingercard對象的數組列表中。奇怪的是,我似乎無法使用構造函數來填充數組列表。我已經嘗試了與數組相同的事情,它工作得很好,但fill()方法無法將值添加到列表中。

class huntsingerdeck 
{ 
private ArrayList<huntsingercard> list = new ArrayList<huntsingercard>(); 

public huntsingerdeck() 
{ 
} 
public void fill() 
{ 
    for(int a=0; a<26; list.add(a++,new huntsingercard())); 
} 

我在這裏錯過了什麼?我也嘗試在構造函數中實例化列表,但這也與數組混淆。

+1

調用'補()'? – vikingsteve

+0

歡迎來到Stack Overflow!它看起來像你需要學習使用調試器。請幫助一些[互補調試技術](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)。如果您之後仍然有問題,請隨時返回更多詳情。 –

+0

我從另一個類中調用'fill()',其中兩個huntsingerdeck對象已經被實例化。對缺乏澄清的道歉。 – frankmackey

回答

1

你可以用一個實例初始化

public class HuntSingerDeck { 

    private ArrayList<HuntSingerCard> list = new ArrayList<HuntSingerCard>();  

    { 
     for(int a=0; a<26; a++) { 
      list.add(new HuntSingerCard())); 
     } 
    } 

    public HuntSingerDeck() { 
    //Array list is already initialised and filled at this point 
    } 

} 

實例初始化將在構造函數之前被解僱實現這一目標創造一個新的實例時被調用。這意味着在到達構造函數開始之前,ArrayList將被填充。

+0

謝謝你的回答,但我忘了澄清一些事情。我需要能夠從班級外部調用填充方法...想象一下如何處理空卡組合的選項菜單。 – frankmackey

0

基本上你的for循環語法不正確,最後一個表達式應該是0到n的算術運算,而不是布爾(因爲加()返回Boolean)

所以,你需要T作爲如下更改(與A ++表達式): 此外,因爲你不希望使用一個構造函數,你可以使用實例初始化程序,如下圖所示:

class huntsingerdeck 
{ 
private ArrayList<huntsingercard> list = new ArrayList<huntsingercard>(); 

public huntsingerdeck() 
{ 
} 

{ 
    fill(); 
} 

public void fill() 
{ 
    for(int a=0; a<26; a++) { 
      list.add(new huntsingercard())); 
     } 
} 

for循環語法:

for (initialization; termination; increment) { 
    statement(s) 
    } 

您可以從您的構造函數或某些其他方法請參考here

+1

儘管我們經常會看到一個for循環,但是您將其呈現出來,在代碼中放入一些代碼是完全正確的。增量部分嘗試此代碼for(int a = 0; a <26; System.out.println(a ++)){}' – user43968

+0

如果循環語法不正確,爲什麼會編譯它? –

+0

@ user43968這就是我提到0到n算術運算的原因 – developer