我试图检查扑克中的牌是否是皇家同花顺。但是,当我继续检查它时,它会出现为Straight Flush而不是Royal Flush。我稍微修改了它但是我无法检查它,因为我忘了给自己发送一个我需要的主要程序。但问题仍然存在。
private boolean isRoyalFlush(){//check if from 10-Ace and All of same suit---
if(isFlush()==true){
sortByValue();
if((cards[0].rank==10)&&(cards[1].rank==11)&&(cards[2].rank==12)&&(cards[3].rank==13)&&(cards[4].rank==14)){
return true;
}
else{
return false;
}
}
else{
return false;
}
}
理论上卡[i] .rank获得卡的等级,其中11 ==杰克,12 ==女王等等isFlush()检查是否所有相同的诉讼。 sortByValue();将卡分类为数值。
其他代码:
卡片文件
package playingcards;
public class Card {
public final static int CLUBS = 0, DIAMONDS = 1, HEARTS = 2, SPADES = 3;
public final static int JACK = 11, QUEEN = 12, KING = 13, ACE = 14;
public final int suit; // 0 .. 3
public final int rank; // 0 .. 12
private final static String[] suits = { "Clubs", "Diamonds", "Hearts",
"Spades" };
private final static String[] ranks = { "2", "3", "4", "5", "6", "7", "8",
"9", "10", "Jack", "Queen", "King", "Ace" };
/ ** *创建一张价值为v的卡片,按照西装(俱乐部,钻石, *心,黑桃,按升序排列),按等级(高位)。对于 例如,值1对应于2个俱乐部,12对应于Ace *俱乐部,13至2钻石。 * * @param v * 1到52之间的值 * @throws IllegalArgumentException *如果v小于1或大于52 * /
public Card(int v) {
// PRE:
if (!(1 <= v && v <= 52)) {
throw new IllegalArgumentException("Bad constructor arguments " + v);
}
suit = (v - 1) / 13;
rank = (v - 1) % 13;
}
/ ** *创建一张等级为r且适合s的卡片。排名值是数字的字面值 *排名,Jacks为10,Aces为14,依此类推。西装从0到 * 3,对应于俱乐部,钻石,心形和黑桃。请注意这一点 * class包括所有rank和suit值的符号常量。 * * @param r *卡的等级介于2和Card.ACE之间(14) * @param s *套装,Card.CLUBS(0)和Card.SPADES(3)之间的价值 * * @throws IllegalArgumentException *如果r不在2和14之间(包括)或s不是 *介于0和3之间(含) * /
public Card(int r, int s) {
// PRE: (0 <= s <= 3) AND (2 <= r <= 14)
if (!((0 <= s && s <= 3) && (2 <= r && r <= 14))) {
throw new IllegalArgumentException("Bad constructor arguments " + r
+ "," + s);
}
suit = s;
rank = r - 2;
}
/ ** *返回此卡的字符串表示形式,包括其套装和 *它的价值。样本返回值为:“心之女王”,“钻石之10”, * “黑桃王牌” * /
public String toString() {
return ranks[rank] + " of " + suits[suit];
}
// New things:
/ ** *根据此卡是否大于,更少,返回-1,1或0 *大于或等于其论点。传统的抽奖顺序 *扑克:排名第一(高位),然后是西装。 * * @throws NullPointerException *如果c为null * /
public int compareTo(Card c) {
if (c.rank > this.rank || (c.rank == this.rank && c.suit > this.suit)) {
return -1;
} else if (this.rank > c.rank
|| (this.rank == c.rank && this.suit > c.suit)) {
return 1;
} else {
return 0;
}
}
public boolean equals(Card c) {
return this.compareTo(c) == 0;
}
} // Card