2016-09-07 4 views
-2

Dies kann von Vorteil für jeden sein, der versucht, eine ArrayList dynamisch aufzufüllen.Ausgabe überschreiben zuvor gespeicherte Variablen in ArrayList

Spikes[] ist ein Array, das ein Spielbrett darstellt.

Darunter befindet sich eine bedingte Anweisung.

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

inte1 und inte2 sind int repräsentiert die ursprüngliche Position eines Stücks. Ziel1 und Ziel2 sind Intets, die den ursprünglichen Standort + Würfelwurf repräsentieren;

Da Spikes ein Spielbrett ist, kann die Bedingung von vielen ursprünglichen Orten erfüllt werden + Würfel rollt so viele verschiedene Ziele.

Viele mögliche Bewegungen können generiert werden, wenn die Bedingung erfüllt ist.

Mein Problem ist (wenn die Bedingung erfüllt ist), wenn ich die möglichen Bewegungen in eine ArrayList speichere, werden die 4 ganzen Zahlen, die durch die erste 'mögliche Bewegung' erzeugt werden, durch die nächsten 4 möglichen Ganzzahlen überschrieben .

So speichere ich nicht alle möglichen Züge zu einer Arraylist für die spätere Sortierung.

Ich habe versucht Speichern jeder Variable getrennt in int-Arrays zu später zusammengelegt werden, aber immer noch überschreibt. Versucht, ein Spielbrettobjekt zu erstellen, aber Fehler erhalten.

Die Ausgabe kann eine 1D- oder 2D-Arraylist sein.

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

Haben Sie die Indizierung oder '.add()' verwendet, wenn Sie die erste verwendet haben, wird die vorherige überschrieben –

+0

Fügen Sie weiteren Code und genauen Fehler/Ausnahme –

+1

Sie erstellen eine neue ArrayList jedes Mal, wenn Sie addMoveToArray aufrufen Werfen Sie die Liste weg, nachdem Sie den Inhalt ausgedruckt haben – FredK

Antwort

0

Sie betrachten könnte a Move-Klasse erstellen, wobei jede Instanz die beiden „aus“ Indizes enthält und die beiden „auf“ Indizes, dann Instanzen Gehen Sie zu dem Arraylist hinzuzufügen. Wenn Sie einen Zug ausführen, löschen Sie die Array-Liste, damit Sie mit einem neuen Satz möglicher Moves beginnen können.

Verwandte Themen