在java中将对象添加到arraylist

0 java add arraylist object

我正在尝试在java上写一个solitiare游戏.我正在尝试将卡对象添加到我的arraylist但MakeDeck功能无法正常工作.

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);
    }
} 
Run Code Online (Sandbox Code Playgroud)

当我试图打印值时,它打印"0,null,null",52次.问题是什么?看起来我无法访问ArrayList,但我不知道为什么.

编辑:

卡构造函数:

   public Card(int valueTemp, String suitTemp, String statusTemp) {
    valueTemp = value;
    suitTemp = suit;
    statusTemp = status;
    }
Run Code Online (Sandbox Code Playgroud)

打印功能:

 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");
 }
Run Code Online (Sandbox Code Playgroud)

Den*_*eng 5

问题出在你的Card构造函数中; 作业是错误的.

你要

public Card(int valueTemp, String suitTemp, String statusTemp) {
    value = valueTemp;
    suit = suitTemp;
    status = statusTemp;
}
Run Code Online (Sandbox Code Playgroud)

反过来说,不将字段设置为等于参数,它将参数设置为等于字段.具体来说,你之前有过的

public Card(int valueTemp, String suitTemp, String statusTemp) {
   valueTemp = value;
   suitTemp = suit;
   statusTemp = status;
}
Run Code Online (Sandbox Code Playgroud)

当你真正想要在构造函数中执行相反的操作时,设置valueTempvalue,suitTempto suitstatusTempto status.