2016-11-13 66 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