2016-11-13 21 views
0

* fillメソッドは、オプションからなるメニューを持つ別のクラスから呼び出されます。その1つはfillオプションです。オブジェクトで構成されるプライベートArrayList属性に追加することはできません

コンストラクタの外側にあるhuntsingercardオブジェクトの配列リストに26個の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

ようこそスタックオーバーフロー!デバッガの使い方を学ぶ必要があるようです。 [補完的なデバッグ手法](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)にご協力ください。その後も問題が残っている場合は、もう少し詳しくお聞かせください。 –

+0

私は2つのhuntsingerdeckオブジェクトがインスタンス化されている別のクラスから 'fill()'を呼び出しています。明確化の欠如に対する謝罪。 – 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 
    } 

} 

インスタンス初期化子が発射されます。つまり、アーリーリストはコンストラクタの開始に達する前に塗りつぶされます。ループ構文が誤っているため

+0

ありがとう、私は何かを明確にするのを忘れました。私はクラスの外からのfillメソッドを呼び出すことができる必要があります...空のカードデッキで何をするかのオプションのメニューを考えてください。 – frankmackey

0

基本的にはあなたの、最後の式は、n個の算術演算に0にしてください、ブール値ではない(アドオン()は返すのでブール値)だから、

、あなたは(とtは以下のようにそれを変更する必要があります++式):また 、あなたは、コンストラクタを使用しないよう、以下のように、あなたがインスタンス初期化子を使用することができます:ループ構文について

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 (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

関連する問題