0
我正在制作一个涉及一副扑克牌的程序。我知道有很多方法可以制作一副扑克牌,但在这种情况下,我会将每张牌作为对象。该对象存储6个值:颜色,花色,面值,值和IDNumber。对象数组 - 数据没有正确存储在一副扑克牌上
然后通过一种名为DeckOfCardsInitialiser的方法,将52个卡片对象存储在一个数组中。该方法初始化卡,即它计算和设置对象(即卡)变量。
当检查卡片设置是否正确时,我发现所有52张卡片都分配给仅用于最后一张卡片的值,在这种情况下为黑桃王。我已经做了一些调试,并知道DeckOfCardsInitialiser按照设计工作。它只是数组的对象,并不是按计划运行。
这是我第一次使用对象数组,这让我思考我是否犯了一些愚蠢的错误。该程序从Test - > DeckOfCardsInitialiser - > Card运行。我将以相反的顺序打印,以便更易于遵循。
卡
public class Card{
private static String suit ="";
private static String face="";
private static String colour="";
private static int value;
private static int rank;
private static int idNum;
public Card(){
}
public static void setSuit(String x){
suit = x;
}
public static void setFace(String x){
face = x;
}
public static void setColour(String x){
colour = x;
}
public static void setValue(int x){
value = x;
}
public static void setRank(int x){
rank = x;
}
public static void setIdNum(int x){
idNum = x;
}
public static String getSuit(){
return suit;
}
public static String getFace(){
return face;
}
public static String getColour(){
return colour;
}
public static int getValue(){
return value;
}
public static int getRank(){
return rank;
}
public static int getIdNum(){
return idNum;
}
}
DeckofCardsInitialiser
public class DeckOfCardsInitialiser{
private static Card [] deckOfCards = new Card[52]; // makes an array with 52 cards
// ================================================== Constructor
// Constructor runs through all 52 'cards' and sets values to each one
public DeckOfCardsInitialiser(){
for (int counter = 0; counter < deckOfCards.length; counter++){
deckOfCards[counter] = new Card();
setSuits(counter);
setValues(counter);
}
}
// Sets suit type and colour to each card
public static void setSuits(int x){
if(x >= -1 && x <= 11){
deckOfCards[x].setSuit("Hearts");
deckOfCards[x].setColour("Red");
}
if(x >= 12 && x <= 24){
deckOfCards[x].setSuit("Spades");
deckOfCards[x].setColour("Black");
}
if(x >= 25 && x <= 37){
deckOfCards[x].setSuit("Diamonds");
deckOfCards[x].setColour("Red");
}
if(x >= 38 && x <= 51){
deckOfCards[x].setSuit("Spades");
deckOfCards[x].setColour("Black");
}
}
// Sets face, rank, value & IDnum for each card
public static void setValues(int x){
if (x == 0 || x == 13 || x == 26 || x == 39){
deckOfCards[x].setFace("Ace");
deckOfCards[x].setRank(13);
deckOfCards[x].setValue(1);
deckOfCards[x].setIdNum(x);
}
if (x == 1 || x == 14 || x == 27 || x == 40){
deckOfCards[x].setFace("Two");
deckOfCards[x].setRank(1);
deckOfCards[x].setValue(2);
deckOfCards[x].setIdNum(x);
}
if (x == 2 || x == 15 || x == 28 || x == 41){
deckOfCards[x].setFace("Three");
deckOfCards[x].setRank(2);
deckOfCards[x].setValue(3);
deckOfCards[x].setIdNum(x);
}
if (x == 3 || x == 16 || x == 29 || x == 42){
deckOfCards[x].setFace("Four");
deckOfCards[x].setRank(3);
deckOfCards[x].setValue(4);
deckOfCards[x].setIdNum(x);
}
if (x == 4 || x == 17 || x == 30 || x == 43){
deckOfCards[x].setFace("Five");
deckOfCards[x].setRank(4);
deckOfCards[x].setValue(5);
deckOfCards[x].setIdNum(x);
}
if (x == 5 || x == 18 || x == 31 || x == 44){
deckOfCards[x].setFace("Six");
deckOfCards[x].setRank(5);
deckOfCards[x].setValue(6);
deckOfCards[x].setIdNum(x);
}
if (x == 6 || x == 19 || x == 32 || x == 45){
deckOfCards[x].setFace("Seven");
deckOfCards[x].setRank(6);
deckOfCards[x].setValue(7);
deckOfCards[x].setIdNum(x);
}
if (x == 7 || x == 20 || x == 33 || x == 46){
deckOfCards[x].setFace("Eight");
deckOfCards[x].setRank(7);
deckOfCards[x].setValue(8);
deckOfCards[x].setIdNum(x);
}
if (x == 8 || x == 21 || x == 34 || x == 47){
deckOfCards[x].setFace("Nine");
deckOfCards[x].setRank(8);
deckOfCards[x].setValue(9);
deckOfCards[x].setIdNum(x);
}
if (x == 9 || x == 22 || x == 35 || x == 48){
deckOfCards[x].setFace("Ten");
deckOfCards[x].setRank(9);
deckOfCards[x].setValue(10);
deckOfCards[x].setIdNum(x);
}
if (x == 10 || x == 23 || x == 36 || x == 49){
deckOfCards[x].setFace("Jack");
deckOfCards[x].setRank(10);
deckOfCards[x].setValue(10);
deckOfCards[x].setIdNum(x);
}
if (x == 11 || x == 24 || x == 37 || x == 50){
deckOfCards[x].setFace("Queen");
deckOfCards[x].setRank(11);
deckOfCards[x].setValue(10);
deckOfCards[x].setIdNum(x);
}
if (x == 12 || x == 25 || x == 38 || x == 51){
deckOfCards[x].setFace("King");
deckOfCards[x].setRank(12);
deckOfCards[x].setValue(10);
deckOfCards[x].setIdNum(x);
}
public static String getSuit(int x){
String suit = deckOfCards[x].getSuit();
return suit;
}
public static String getFace(int x){
String face = deckOfCards[x].getFace();
return face;
}
public static String getColour(int x){
String colour = deckOfCards[x].getColour();
return colour;
}
public static int getValue(int x){
int value = deckOfCards[x].getValue();
return value;
}
public static int getRank(int x){
int rank = deckOfCards[x].getRank();
return rank;
}
public static int getIdNum(int x){
int idNum = deckOfCards[x].getIdNum();
return idNum;
}
}
}
测试
公共类的测试{
public static void main(String [] args){
DeckOfCardsInitialiser deckOfCards = new DeckOfCardsInitialiser();
for (int counter = 0; counter < 52; counter++){
System.out.printf("%s of %s\n",deckOfCards.getFace(counter), deckOfCards.getSuit(counter));
}
}
}
我非常感谢你托马斯 - 这在过去的24小时里一直让我感到非常悲伤! – 2014-10-27 14:03:40
完成 - 工作 - 高兴!再次感谢你 – 2014-10-27 14:16:03