java - 为什么我会得到这个奇怪的输出 Hand@2802cf63?

标签 java arrays poker

我不确定为什么会得到这个输出。当我尝试为我的扑克程序打印一手牌时。我知道我可以使用很多东西来提高效率,比如枚举。但这是为了一个类,所以我能使用的东西有限。我从未在 Deck 类中使用过 Collections.Shuffle,所以我不确定我是否做对了。与我的卡类中的覆盖相同。

关于如何让这个程序打印 5 张卡片有什么建议吗?

卡片:

public class Card 
{


    String suits;
    String values;

    public Card(int suit, int value)
    {
        if (suit == 0)
        {
            suits = "Spades";
        }
        else if (suit == 1)
        {
            suits = "Clubs";
        }
        else if (suit == 2)
        {
            suits = "Hearts";
        }
        else 
        {
            suits = "Diamonds";
        }

        if (value == 0)
        {
            values = "2";
        }
        else if (value == 1)
        {
            values = "3";
        }
        else if (value == 2)
        {
            values = "4";
        }
        else if (value == 3)
        {
            values = "5";
        }
        else if (value == 4)
        {
            values = "6";
        }
        else if (value == 5)
        {
            values = "7";
        }
        else if (value == 6)
        {
            values = "8";
        }
        else if (value == 7)
        {
            values = "9";
        }
        else if (value == 8)
        {
            values = "10";
        }
        else if (value == 9)
        {
            values = "Jack";
        }
        else if (value == 10)
        {
            values = "Queen";
        }
        else if (value == 11)
        {
            values = "King";
        }
        else
        {
            values = "Ace";
        }
    }
    @Override
    public String toString()
    {
        return values + " of " + suits;
    }

}

牌组:

import java.util.Arrays;
import java.util.Collections;
public class Deck 
{
    Card[] deck = new Card[52];

    public Deck()
    {
        int element;
        for(int iSuit = 0; iSuit < 4; iSuit++)
        {
            for(int iValue = 0; iValue < 13; iValue++)
            {
                element = iSuit * 13 + iValue;
                deck[element] = new Card(iSuit, iValue);
            }
        }
    }

    public void shuffle()
    {
        Card[] newDeck = new Card[52];
        int element = (int) (Math.random()*52);

        Collections.shuffle(Arrays.asList(deck[element]));

    public Card dealCard(int card)
    {
        return deck[card];
    }
}

手:

public class Hand 
{
    Card[] hand = new Card[5];

    public Hand(Deck deck)
    {
       int element;
       for(int card = 0; card < 4; card++)
        {
            hand[card]=deck.dealCard(card);
        }
    }
}

主要:

public class FiveCardPoker 
{

    public static void main(String[] args)
    {

        Deck timsDeck = new Deck();

        timsDeck.shuffle();

        Hand timsHand = new Hand(timsDeck);

        System.out.println(timsHand);


    }

}

最佳答案

Hand 不会覆盖 Object 的 toString 方法。这样你就得到了标准的 toString 方法。 用类似的方法重写 toString 方法:

public String toString() {
  StringBuffer sb = new StringBuffer();
   for(int card = 0; card < 4; card++)
        {
            sb.append(hand[card]+",")
        }
  return sb.toString()
}

关于java - 为什么我会得到这个奇怪的输出 Hand@2802cf63?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24819037/

相关文章:

javascript - 有没有办法制作 "for loop of for loops"?

java - 如何遍历所有组合,例如48选5

prolog - Prolog 中的卡片表示

java - 返回 int 是 java 中的原子操作吗?

java - 我有多个布局文件,但应用程序只能识别 1 个?

java - 从 POM 中提取 Maven 依赖版本

c - 数组声明导致 while 循环出现奇怪的行为

javascript - 如何将非方形二维数组旋转两次以获得所有可能的旋转?

c - 为什么我的变量没有增加?

java - 可迭代的继承