我正在尝试在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);
}
}
当我试图打印它打印的值&#34; 0,null,null&#34; ,52次。问题是什么?看起来我无法访问ArrayList,但我不知道为什么。
编辑:
卡构造函数:
public Card(int valueTemp, String suitTemp, String statusTemp) {
valueTemp = value;
suitTemp = suit;
statusTemp = status;
}
打印功能:
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");
}
答案 0 :(得分:5)
问题出在您的Card
构造函数中;作业是错误的。
你想要
public Card(int valueTemp, String suitTemp, String statusTemp) {
value = valueTemp;
suit = suitTemp;
status = statusTemp;
}
另一种方法是不将字段设置为等于参数,它将参数设置为等于字段。具体来说,你之前有什么
public Card(int valueTemp, String suitTemp, String statusTemp) {
valueTemp = value;
suitTemp = suit;
statusTemp = status;
}
将valueTemp
设置为value
,将suitTemp
设置为suit
,将statusTemp
设置为status
,当您真正想要采用其他方式时在你的构造函数中。
答案 1 :(得分:2)
public Card(int valueTemp, String suitTemp, String statusTemp) {
valueTemp = value;
suitTemp = suit;
statusTemp = status;
}
所有这些作业都回到了前面。您将分配给参数而不是来自。习惯上这样写:
public Card(int value, String suit, String status) {
this.value = value;
this.suit = suit;
this.status = status;
}
答案 2 :(得分:1)
作业是倒退的。
lValue = rValue
;
lValue
是您要设置的内容,而rValue
是您希望它成为的数据。
当你这样做时:
public Card(int valueTemp, String suitTemp, String statusTemp) {
valueTemp = value;
suitTemp = suit;
statusTemp = status;
}
您将作为参数传入的参数valueTemp
,suitTemp
和statusTemp
更改为value
,suit
和{{} 1}}是。
要解决此问题,请翻转您指定的值,如下所示:
status