Hinzufügen von Objekten zu einem arraylist in java
Ich bin versucht zu schreiben, eine solitiare-Spiel auf java. Ich versuche, fügen Sie der Karte die Objekte meiner arraylist, aber die MakeDeck-Funktion nicht richtig funktioniert.
public class PileOfCards {
public ArrayList<Card> pile = new ArrayList<Card>();
Card tempo;
public PileOfCards() {
pile = new ArrayList<Card>();
}
public void MakeDeck() {
for (int i=0;i<13;i++){
tempo = new Card(i+1, "FaceDown", "Clubs");
pile.add(tempo);
}
for (int j=0;j<13;j++){
tempo = new Card(j+1, "FaceDown", "Diamonds");
pile.add(tempo);
}
for (int k=0;k<13;k++){
tempo = new Card(k+1, "FaceDown", "Hearts");
pile.add(tempo);
}
for (int l=0;l<13;l++){
tempo = new Card(l+1, "FaceDown", "Spades");
pile.add(tempo);
}
}
Wenn ich versuche, drucken Sie die Werte, die es gibt "0, null, null," , 52 mal. Was ist das problem? Wie es aussieht, kann ich nicht erreichen, um der ArrayList, aber ich weiß nicht, warum.
Bearbeitet:
Karte Konstruktor:
public Card(int valueTemp, String suitTemp, String statusTemp) {
valueTemp = value;
suitTemp = suit;
statusTemp = status;
}
Print-Funktion:
public void printPile(){
for(int i=0;i<pile.size();i++){
System.out.print(pile.get(i).status);
System.out.print(" ");
System.out.print(pile.get(i).suit);
System.out.print(" ");
System.out.print(pile.get(i).value);
System.out.printf("\n");
}
- Ohne zu sehen, den code, wo du tust das print-out, wir können nicht wirklich helfen. Ich habe ein paar Theorien darüber, was falsch ist, aber Erstens, bitte fügen Sie den code, der nicht funktioniert, um Ihre original-Beitrag.
- Was macht Ihr print-Anweisung Aussehen? Und kann man den Konstruktor für
Card
- Nur ein Kommentar, um zu sagen, dass a) Sie brauchen nicht eine neue variable for each-Schleife, b), wenn Sie hinzufügen, wird
1
der schleifenvariablen, warum dann nichtfor (int i=1; i <= 13; i++) ...
- Ich vermute das problem ist in die print-routine. Der obige code scheint OK.
- Ich fügte hinzu, die "drucken" - Funktion code und den Konstruktor.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das Problem ist in Ihrem
Card
- Konstruktor; die Zuordnungen sind falsch herum.Du willst
Anders herum, nicht die Felder bestimmen, die gleich dem Parameter, wird der Parameter gleich der Felder. Insbesondere, was Sie vor hatte,
setzt
valueTemp
zuvalue
,suitTemp
zusuit
, undstatusTemp
zustatus
, wenn Sie tatsächlich tun wollte, der andere Weg, um in Ihrem Konstruktor.Alle diese Abtretungen werden von hinten nach vorne. Sie sind zuweisen zu die Parameter anstelle von von Sie. Es ist üblich, zu schreiben es so:
Sind die Aufgaben rückwärts.
lValue = rValue
;lValue
ist die Sache, die Sie festlegen möchten, währendrValue
ist die Daten, die Sie wollen.Wenn du hast:
Änderst du die Parameter
valueTemp
,suitTemp
, undstatusTemp
die Sie übergeben als Parameter an, wasvalue
,suit
, undstatus
sind.Um dies zu beheben, flip um die Werte, die Sie zuweisen, etwa so: