写代码不难..给你一个思路 你就按照这个思路写.
首先按照7张牌的大小 存到一个hashmap
当 hashMap 的count <5 意味着 他们不可能存在 同花顺 同花之类的..那么你可以轻松的判断里面到底是 4条 3条之类的 这个很简单...
当 count >= 5的时候 你就需要判断是否为同花 或者同花顺了..
这个也简单 你在按照花色 进行一次 hashmap 然后看看是否有同一个花色超过5的的..如果没有 则不可能为同花...同样 顺子的判断也根据所有的数字 去重复之后排序..看有没有5个连续的数字..如果没有 就不是顺子..
这样就可以搞定了
public class TestStraightFlush {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Card[] cards = new Card[] {
new Card("Spade", 5),
new Card("Spade", 6),
new Card("Spade", 7),
new Card("Spade", 8),
new Card("Spade", 9)
};
System.out.println(isSF(cards)?"是同花顺":"不是同花顺");
}
// 判断是否同花顺
static boolean isSF(Card[] cards) {
// 判断花色
String suit = cards[0].getSuit();
int min = cards[0].getNum();
int max = cards[0].getNum();
for (int i = 1; i < cards.length; i++) {
// 有花色异常则返回false
if (!suit.equals(cards[i].getSuit()))
return false;
//
int num = cards[i].getNum();
if (num > max)
max = num;
else if (num < min)
min = num;
// 最后一张牌,确定max和min是所有牌的最大和最小
if (i == cards.length - 1)
//最大比最小大4,说明是同花顺
return (max - min) == 4;
}
return true;
}
}
// 扑克牌类
class Card {
String suit;// 花色
int num;// 大小
public String getSuit() {
return suit;
}
public void setSuit(String suit) {
this.suit = suit;
}
public int getNum() {
return num;
}
public void setNum(int num) {
this.num = num;
}
public Card(String suit, int num) {
super();
this.suit = suit;
//1按照14理解
if(num == 1)
this.num = 14;
else
this.num = num;
}
}
这个规则从小就懂,但还没写过。
应该是13张的吧