【发布时间】:2015-02-23 11:33:36
【问题描述】:
如何为 int 数组编写 toString() 方法?说要返回一个 52 卡包的字符串表示?
这是一个作为类的一部分的示例数组:
{
int[] cards = new int[52];
public void Deck()
{
// Setting up array
String[] suits = {"SPADES", "CLUBS", "HEARTS", "DIAMONDS"};
String[] ranks = {"TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN",
"EIGHT", "NINE", "TEN", "JACK", "QUEEN", "KING", "ACE"};
{
// Initalising array
for (int i = 0; i < cards.length; i++)
{
cards[i] = i;
}
}
}
这是以面向对象的方式完成的。在这种情况下如何编写 toString() 方法以返回表示纸牌包的字符串表示,或者在这种情况下返回数组?
我目前使用过:
@Overide
public String toString()
{
return getClass().getName() + "[cards[]= " + cards[] + "]";
}
我也使用了类似的 toString() 方法,写成:
return getClass().getName() + "[suits[]= " + suits[] + "ranks[]= " + ranks[] + "]";
这与我用于其他值的 toString() 方法相同,它通常可以工作。虽然现在我都得到了这个错误(或者至少是第一个):
cannot find symbol
symbol: Class cards //which I dont have other than the array at the top
location: Class Pack // The class the array is currently in
unexpected type
required: value
found: class
'.class.' expected
至于打印,我希望将其格式化为列表或网格。
【问题讨论】:
-
我不会使用字符串,而是使用
enum来表示花色和面值。卡片将是一个组合,这将使打印更容易。顺便说一句,如果您使用此模式,您的 IDE 可以为您生成toString()。 -
@SeanOwen 看到顶部的编辑,我只想要一个列表或网格形式的标准字符串表示。
-
@PeterLawrey 我已经在同一个包中的一个单独的类中使用了 suit 和 rank 作为枚举,但它们已经被计算为整数,而不是字符串。
-
每个
enum都有一个name()方法,它是名称的字符串表示形式。你是如何在没有字符串的情况下使用enum的? -
@PeterLawrey 好吧,我在
name()方法本身中没有name()方法。他们所拥有的只是int values以及返回它们的方法,如getValue()。我确实使用DIAMONDS(1)之类的东西,但仅此而已。你想让我放一个我的枚举吗?