使用Java创建一副54张卡片(包括小丑)的好方法是什么

使用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",

我对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", "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卡应用程序。我甚至不认为太宽泛是有效的——除非你想声明所有的设计问题都超出了范围,而事实上不应该如此。投票重新开放。顺便说一句,
诉讼
等级
应该是静态字段这不是代码审查问题!建议迁移前请阅读常见问题解答。