Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用于在Java中表示卡的类?_Java_Class_Enums_Playing Cards - Fatal编程技术网

用于在Java中表示卡的类?

用于在Java中表示卡的类?,java,class,enums,playing-cards,Java,Class,Enums,Playing Cards,我正在用Java编写一个21点程序,我开始为一个对象卡编写类声明。这就足够了吗,或者我有没有一些方法需要改进 public class Card { public int suit; //Value 1-4 to represent suit public int value; //Value 1-13 to represent value (i.e. 2, J) public Card(int suit, int value) { //Not yet i

我正在用Java编写一个21点程序,我开始为一个对象卡编写类声明。这就足够了吗,或者我有没有一些方法需要改进

public class Card {
    public int suit; //Value 1-4 to represent suit
    public int value; //Value 1-13 to represent value (i.e. 2, J)
    public Card(int suit, int value) {
        //Not yet implemented
    } 
}

还有,在Java中有没有一个类似C++的枚举数据结构的好方法,因为这对卡片名称和套装很好?

我会使用一个带有套装和值作为属性的枚举。西装和价值也可以是枚举

我会使用一个属性为suit和value的枚举。西装和价值也可以是枚举

是的,你的开始看起来不错。将等级和套装切换到枚举-这将是一个好主意。就方法而言,在你前进的过程中创建它们,并发现你需要它们。根据你正在编写的游戏,你可能需要一套完全不同的方法

Java有一个非常强大的枚举。查看下面的示例

public enum Rank { ACE(1, "Ace"), TWO(2, "Two"), ... etc KING(13, "King"); private int value; private String display; private Rank (int value, String display) { this.value = value; this.display = display; } public int getValue() { return this.value; } public int getDisplay() { return this.display; } } 公共枚举等级{ ACE(1,“ACE”), 两(2,“两”), 等 国王(13,“国王”); 私有int值; 私有字符串显示; 私有秩(int值,字符串显示){ 这个值=值; this.display=显示; } public int getValue(){ 返回此.value; } 公共int getDisplay(){ 返回此项。显示; } }
是的,你的开始看起来不错。将等级和套装切换到枚举-这将是一个好主意。就方法而言,在你前进的过程中创建它们,并发现你需要它们。根据你正在编写的游戏,你可能需要一套完全不同的方法

Java有一个非常强大的枚举。查看下面的示例

public enum Rank { ACE(1, "Ace"), TWO(2, "Two"), ... etc KING(13, "King"); private int value; private String display; private Rank (int value, String display) { this.value = value; this.display = display; } public int getValue() { return this.value; } public int getDisplay() { return this.display; } } 公共枚举等级{ ACE(1,“ACE”), 两(2,“两”), 等 国王(13,“国王”); 私有int值; 私有字符串显示; 私有秩(int值,字符串显示){ 这个值=值; this.display=显示; } public int getValue(){ 返回此.value; } 公共int getDisplay(){ 返回此项。显示; } }
Java从1.5开始完全支持。巧合的是,链接中提供的示例使用了一个card类作为示例,正如您所尝试的那样


通过添加getter,您拥有的基类就足够了。如果您需要在某个时候进行排序,那么实现Comparable可能会很有价值。

Java as 1.5完全支持。巧合的是,链接中提供的示例使用了一个card类作为示例,正如您所尝试的那样

通过添加getter,您拥有的基类就足够了。如果您需要在某个时候进行排序,那么实现Comparable可能会证明是有价值的。

关于“我应该有哪些方法需要改进”,这是非常主观的,并且基于使用类的上下文。例如,如果您从不需要打印对象,则可能不需要“toString()”函数,但如果需要,它可能会派上用场(特别是如果您希望以特定方式格式化输出)

Java也有enum,请参阅教程。

关于“是否有一些我应该使用的方法,我正在润色”,这是非常主观的,并且基于类使用的上下文。例如,如果您从不需要打印对象,则可能不需要“toString()”函数,但如果需要,它可能会派上用场(特别是如果您希望以特定方式格式化输出)

public enum Suite {
    HEART, DIAMOND, CLUB, SPADE
}
public enum Value {
    TWO, THREE, ... , JACK, QUEEN, KING, ACE 
}
Java也有enum,请参阅以获取教程

public enum Suite {
    HEART, DIAMOND, CLUB, SPADE
}
public enum Value {
    TWO, THREE, ... , JACK, QUEEN, KING, ACE 
}
剩下的你可以弄清楚


剩下的你可以考虑。

你可能想为不同的游戏创建子类。扑克牌和纸牌可以比较;一是王牌大于王牌;另一方面,王牌不如王牌


对于BlackjackCard来说,比较是无关紧要的。您可能会考虑使用一个In值(),其中k或q或j的值(10),但对于BLACKJACK卡来说不容易工作,因为ACE可以是一个或十一个。因此,在设计模型以匹配真实世界时,这是一个很好的练习:这里有一个问题,卡的整数值不是卡的全部固有值,而是取决于卡的上下文。

您可能希望为不同的游戏创建子类。扑克牌和纸牌可以比较;一是王牌大于王牌;另一方面,王牌不如王牌


对于BlackjackCard来说,比较是无关紧要的。您可能会考虑使用一个In值(),其中k或q或j的值(10),但对于BLACKJACK卡来说不容易工作,因为ACE可以是一个或十一个。因此,在设计模型以匹配真实世界时,这是一个很好的练习:这里有一个问题,即卡的整数值并非完全是卡的固有值,而是取决于卡的上下文。

java有枚举:。请尝试使用“pre”在代码前后添加html标记以使其格式更好。java有枚举:。尝试在代码前后使用“pre”html标记以使其格式更好。构造函数private Rank()是否应声明为private?这不是100%正确的,因为Ace具有多个幂次,因此无法在此模式下设置列组。在我看来,在对象上使用它更好不过,我们可以使用序数作为排名,我们将第一个元素设置为NONE,这种情况下需要的另一个枚举是suit enum suit{NONE(“NONE”)、Diamonds(“Diamonds”)、HEARTS(“HEARTS”)、CLUBS(“CLUBS”)、SPADES(“SPADES”)}在枚举中,只能设置私有构造函数该构造函数被声明为私有,因为它仅在枚举中使用。至于王牌拥有多重力量,这完全取决于正在进行的游戏。这只是一个展示Java枚举强大功能的示例。看起来我对这个问题的回答太过了,这是为了迎合原始海报的口味。构造函数private Rank()应该声明为private吗?这不是100%正确的,因为Ace具有多个幂次,所以不能在此模式下设置秩。在我看来,在对象上使用它更好,然而,我们可以使用序数作为秩,我们将第一个元素设置为无,为t设置另一个所需的枚举