gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 17:07:30 24 4
gpt4 key购买 nike

我不确定为什么会得到这个输出。当我尝试为我的扑克程序打印一手牌时。我知道我可以使用很多东西来提高效率,比如枚举。但这是为了一个类,所以我能使用的东西有限。我从未在 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com