2016-09-07 4 views
-2

これは、ArrayListを動的に生成しようとしている人にはメリットがあります。ArrayList内の以前に保存された変数を上書きする出力

Spikes[]は、ゲームボードを表す配列です。

下は条件文です。

if(Spikes[inte1]>=1 && Spikes[inte2]>=1 && Spikes[destination1]>=0 && Spikes[destination2]>=0){ 

inte1とinte2は、ピースの初期位置を表すintです。 destination1とdestination2は、初期位置+ダイスロールを表すintです。

スパイクはゲームボードなので、多くの初期の場所で条件を満たすことができます+多くの異なる目的地がロールします。

条件が満たされると、多くの可能な移動が生成されます。

私の問題は、可能な移動をArrayListに保存すると、最初の 'possible move'によって生成された4つの整数が、次の4つの移動可能な整数によって上書きされ、 。

このように、後で並べ替えることができるarraylistにすべての可能な移動を保存しているわけではありません。

私は それぞれの変数を別々にint配列に保存しようとしましたが、後でアセンブルされても上書きされます。 ゲームボードオブジェクトを作成しようとしましたが、エラーが発生しました。

出力には1Dまたは2Dのarraylistを使用できます。あなたは、各インスタンスは、インデックス「から」2と「を」2つのインデックスが含まれている移動クラスを作成、検討するかもしれない

if(Spikes[0]>=1 && Spikes[inte2]>=1 && Spikes[destination1]>=0 &&  
Spikes[destination2]>=0){ 
c.addMoveToArray(inte1, inte2, destination1, destination2);} 

public int addMoveToArray (int inte1, int inte2, int destination1, int 
destination2) { 

ArrayList<Integer> plist = new ArrayList<Integer>(); 
plist.add(inte1); plist.add(inte2); plist.add(destination1);   
plist.add(destination2); 
for (int i=0; i<plist.size();i++) { 
System.out.println(plist); 
} 

Output in console 

[5, 0, 8, 10] 
[6, 0, 9, 11] 
[7, 0, 10, 12] 
[8, 0, 11, 13] 
+1

最初のものを使用した場合は、最初のものを上書きします。 –

+0

さらに多くのコードと正確なエラー/例外を追加してください –

+1

addMoveToArrayを呼び出すたびに新しいArrayListを作成していますあなたの内容を印刷した後にそのリストを投げ捨ててください。 – FredK

答えて

0

は、その後、ArrayListに移動のインスタンスを追加します。その後、移動をするときは、配列リストをクリアして、新しい一連の可能な移動を再開することができます。

関連する問題