使用Java创建一副54张卡片(包括小丑)的好方法是什么
我对52张非小丑卡使用了以下代码使用Java创建一副54张卡片(包括小丑)的好方法是什么,java,Java,我对52张非小丑卡使用了以下代码 /** the Card class */ public class Card { private int suit; private int rank; private String[] suits = {"Spades", "Hearts", "Clubs", "Dimonds"}; private String[] ranks = {"1", "2", "3", "4", "5",
/**
the Card class
*/
public class Card
{
private int suit;
private int rank;
private String[] suits = {"Spades", "Hearts", "Clubs", "Dimonds"};
private String[] ranks = {"1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "Jack", "Queen", "King"};
public Card (int suit, int rank)
{
this.suit = suit;
this.rank = rank;
}
public String toString()
{
return ranks[rank] + " of " + suits[suit];
}//end toString()
public int getRank()
{
return rank;
}
public int getSuit()
{
return suit;
}
}//end Card class
我如何将这两个小丑添加进来?既然小丑没有西装,你可以让西装成为无效值,比如-1,然后在你的代码中检查它:
public String toString()
{
if (suit < 0) // suit is -1 for jokers
return "Joker";
return ranks[rank] + " of " + suits[suit];
}
公共字符串toString()
{
if(suit<0)//小丑的suit为-1
返回“小丑”;
返回等级[等级]+“+诉讼[诉讼]”;
}
无效值和
null
可用于指示某些不符合数据集其余部分规则的外围数据段。在这种情况下,除小丑牌外,所有牌都有一套套装,因此套装
的无效值将表明这一点。使用null
是对非原语变量执行此操作的方法,例如,如果int suit
是String suit
。因为小丑没有套装,您可以让suit
成为无效值,如-1,然后在代码中检查它:
public String toString()
{
if (suit < 0) // suit is -1 for jokers
return "Joker";
return ranks[rank] + " of " + suits[suit];
}
公共字符串toString()
{
if(suit<0)//小丑的suit为-1
返回“小丑”;
返回等级[等级]+“+诉讼[诉讼]”;
}
无效值和
null
可用于指示某些不符合数据集其余部分规则的外围数据段。在这种情况下,除小丑牌外,所有牌都有一套套装,因此套装
的无效值将表明这一点。使用null
是对非基本变量执行此操作的方法,例如,如果int-suit
是String-suit
。因此有两种简单的方法可以执行此操作。第一个是创建一个新的西装,小丑,并忽略它的排名。这套新衣服只有两张牌。如果诉讼是小丑,你可能会想要覆盖等级以返回一个常量
另一种方法是为小丑设置一个标志isJoker
,并为小丑设置true
。在这种情况下,如果isJoker
为true
,则需要覆盖某些行为(如toString)
在其他语言中,表示卡片的经典方法是将其存储为单个整数0-51。等级为value%13
,西装为value/13
。在这种表示法中,小丑分别为52和53,可以使用if(value>51)
进行检查
使用任何最简单的方法来实现您需要使用的卡,它们之间没有太大区别。因此有两种简单的方法来实现这一点。第一个是创建一个新的西装,小丑,并忽略它的排名。这套新衣服只有两张牌。如果诉讼是小丑,你可能会想要覆盖等级以返回一个常量 另一种方法是为小丑设置一个标志
isJoker
,并为小丑设置true
。在这种情况下,如果isJoker
为true
,则需要覆盖某些行为(如toString)
在其他语言中,表示卡片的经典方法是将其存储为单个整数0-51。等级为value%13
,西装为value/13
。在这种表示法中,小丑分别为52和53,可以使用if(value>51)
进行检查
使用任何最简单的方法来实现您需要使用的卡,它们之间没有太大区别。您可以创建一个标志,说明卡是否是小丑,或者将小丑设置为一个新套件。然后,您需要在一些函数(如toString())中检查这种情况
您还可以扩展Card类来创建一个新的JokerCard,它有自己的这些函数的实现。因为小丑卡是卡片类型,所以您仍然可以将它们与其他卡一起放入一个数组。您可以创建一个标志,表明该卡是否为小丑卡,或者将小丑卡设为一个新套件。然后,您需要在一些函数(如toString())中检查这种情况
您还可以扩展Card类来创建一个新的JokerCard,它有自己的这些函数的实现。因为小丑卡是卡片类型,所以您仍然可以将其与其他卡片一起放入阵列。欢迎使用StackOverflow!这个特别的网站最适合有具体答案的问题,但你的问题是主观的。把它移到这个地方肯定不是太本地化了。它可能太宽了,但Java中有大量的54卡应用程序。我甚至不认为太宽泛是有效的——除非你想声明所有的设计问题都超出了范围,而事实上不应该如此。投票重新开放。顺便说一句,
诉讼
和等级
应该是静态字段这不是代码审查问题!建议迁移前请阅读常见问题。欢迎使用StackOverflow!这个特别的网站最适合有具体答案的问题,但你的问题是主观的。把它移到这个地方肯定不是太本地化了。它可能太宽了,但Java中有大量的54卡应用程序。我甚至不认为太宽泛是有效的——除非你想声明所有的设计问题都超出了范围,而事实上不应该如此。投票重新开放。顺便说一句,诉讼
和等级
应该是静态字段这不是代码审查问题!建议迁移前请阅读常见问题解答。