1

我正在制作一个疯狂的 8 点 Java 纸牌游戏,并为一个玩家的手制作了一系列纸牌,但是当我尝试打印出那只手时,它是一堆随机字符。我也有一个卡片课程,但这似乎很好。请帮忙。

错误:

Welcome to Crazy Eights!(Type 0 to start)
0
Your Hand:
[LnnajiO.Card;@73ae74f5

卡类:

import java.util.Random;
public class Card {

//All of the card numbers, in strings
final String[] FACESTRINGS = {"" , "Ace" , "Two", "Three", "Four", "Five", "Six", 
        "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King" };
//All of the card numbers as integers
final int[] FACENUMS = {0,1,2,3,4,5,6,7,8,9,10,11,12,13};
final String[] SUITSTRINGS = {"Hearts", "Diamonds", "Spades", "Clubs"};
final int[] SUITNUMS = {1,2,3,4};

int FaceNumIndex;
int SuitIndex;
int cardFaceNumber;
String cardFaceString;
int suitFaceNumber;
String suitFaceString;
Random rand = new Random();

    //Default Random Card that assignes a random suit and number
public Card(){
    int tempSuit = rand.nextInt(3);
    int tempNumber = rand.nextInt(13)+1;
    FaceNumIndex = tempNumber;
    cardFaceNumber = FACENUMS[tempNumber];
    cardFaceString = FACESTRINGS[tempNumber];
    suitFaceNumber = SUITNUMS[tempSuit];
    suitFaceString = SUITSTRINGS[tempSuit];

}

    //Overrides the default 
public Card(int suit, int face){
    //Return 1-13 for the face and 0-3 for the suit
    FaceNumIndex = face;
    SuitIndex = suit;
    cardFaceNumber = FACENUMS[face];
    cardFaceString = FACESTRINGS[face];
    suitFaceNumber = SUITNUMS[suit];
    suitFaceString = SUITSTRINGS[suit];
}

public void setFaceName(int faceName){
    //Takes an int to set the Suit of the card  input 1-13
    FaceNumIndex = faceName;
    cardFaceNumber = FACENUMS[faceName];
    cardFaceString = FACESTRINGS[faceName];
}

public void setSuitName(int suitName){
    //Takes an int 1-4 to set the suit name from the array
    SuitIndex = suitName;
    suitFaceNumber = SUITNUMS[suitName];
    suitFaceString = SUITSTRINGS[suitName];
}
//Returns Face Values
public int getFace(){
    return FACENUMS[FaceNumIndex];
}
public String getFaceName(){
    return FACESTRINGS[FaceNumIndex];
}

//Return Suit Values
public int getSuit(){
    return SUITNUMS[SuitIndex];
}
public String getSuitName(){
    return SUITSTRINGS[SuitIndex];
}

//Compares this card to the returned class
public boolean isHigherThan(Card passCard, boolean AceHigher){
    int tempCardSuit = passCard.getSuit();
    int tempCardFace = passCard.getFace();
    if (tempCardFace>FaceNumIndex){
        return false;
    }else if (tempCardFace<FaceNumIndex){
        return true;
    }else{
        if (tempCardSuit>SuitIndex){
            return false;
        }else if(tempCardSuit<SuitIndex){
            return true;
        }else{
            System.out.println("The Cards are equal");
            return false;
        }
    }

}

//Override for previous isHigherThan
public boolean isHigherThan(Card PassCard){

    return isHigherThan(PassCard, true);

}

public String toString(){
    return cardFaceString + " of " + suitFaceString;
}

public boolean isHigherThan(int i, String string) {
    // TODO Auto-generated method stub
    return false;
}
}

同样对于这个“if”语句,我要让它检查player2手中任何一张牌的“suitFaceNumber”或“cardFaceNumber”是否与起始牌的“suitFaceNumber”或“cardFaceNumber”匹配,而不是一一做。

“如果”语句

if(player2Hand[0].cardFaceNumber==startingCard.cardFaceNumber ||
   player2Hand[4].suitFaceNumber==startingCard.suitFaceNumber ){

}
4

1 回答 1

0

你的方法

public String toString(){...}

in class Card 打印一张卡片,但是当你有一个

Card[] hand

这不会自动应用于数组元素。您必须编写一个迭代数组的方法。

或者,编写一个 Hand 类,该类将拥有自己的 toString。

于 2015-01-19T19:09:30.797 回答