我还有一个练习,我需要做的,我真的需要帮助。 我甚至不知道我的isFlush方法的工作,因为似乎我的原因未启用的甲板洗牌和处理一只手,我完全被卡住。 有人可以帮助我,或指向我的方向是正确的东西? 这里是练习:
练习12.5本练习的目标是编写生成随机扑克手和他们进行分类,这样我们就可以估算各种扑克手的可能性的程序。 如果你不玩扑克牌不要担心; 我会告诉你,你需要知道的一切。
一个。 作为热身,编写使用shuffleDeck程序和subdeck生成并打印4只随机扑克手每五张牌。 你得到什么好东西? 以下是可能的扑克手,增加值的顺序:与同级别三同两对牌:直同一职级的三张牌:用行列五张牌对:两张牌与同级别两对序平:五张牌具有相同的西装满堂:三张牌有一个排名,两张卡与另外四个一类:四张牌与同级别同花顺:在序列,并与同一花色的五张牌
湾 编写一个名为isFlush方法,它采用一个甲板作为参数,并返回一个布尔值,指示手是否包含齐平。
C。 编写一个名为isThreeKind方法,需要一个手,并返回一个布尔值,指示手是否蕴含着一种三。
d。 编写产生几千手,并检查它们是否包含冲洗或三个类型的循环。 估计得到这些手之一的概率。
即 编写测试其他扑克手方法。 有些人比其他人更容易。 您可能会发现它有用编写可用于多个测试一些通用的辅助方法。
F。 在一些扑克游戏,玩家获得每七张牌,它们形成的七个最好的五手。 修改你的程序产生的七张牌手和重新计算概率。
这里是我的代码:
public class Poker {
public static void main(String[] args) {
Deck deck = new Deck ();
Deck.dealDeck (deck);
}
}
class Card {
int suit, rank;
int index = 0;
//Card[] deck = new Card [52];
public Card () {
this.suit = 0; this.rank = 0;
}
public Card (int suit, int rank) {
this.suit = suit; this.rank = rank;
}
public static void printCard (Card c) {
String[] suits = { "Clubs", "Diamonds", "Hearts", "Spades" };
String[] ranks = { "narf", "Ace", "2", "3", "4", "5", "6",
"7", "8", "9", "10", "Jack", "Queen", "King" };
System.out.println (ranks[c.rank] + " of " + suits[c.suit]);
}
}
class Deck {
Card[] cards;
public Deck (int n) {
cards = new Card[n];
}
public Deck () {
cards = new Card[52];
int index = 0;
for (int suit = 0; suit <= 3; suit++) {
for (int rank = 1; rank <= 13; rank++) {
cards[index] = new Card (suit, rank);
index++;
}
}
}
public static Deck dealDeck(Deck deck){
shuffle(deck);
Deck hand1 = subDeck(deck, 0, 4);
Deck hand2 = subDeck(deck, 5, 9);
Deck hand3 = subDeck(deck, 10, 14);
Deck hand4 = subDeck(deck, 15, 19);
Deck pack = subDeck(deck, 20, 51);
return deck;
}
public static Deck shuffle(Deck deck){
for (int i = 0; i < 52; i++){
int rand = (int)(Math.random()*(i + 1));
**Deck[] temp = deck[i];
deck[i] = deck[rand];
deck[rand] = deck[temp];**
}
return deck;
}
public static Deck subDeck(Deck deck, int low, int high) {
Deck sub = new Deck (high-low+1);
for (int i = 0; i < sub.cards.length; i++) {
sub.cards[i] = deck.cards[low+i];
}
return sub;
}
public static void printDeck (Deck hand) {
for (int i = 0; i < hand.cards.length; i++) {
Card.printCard (hand.cards[i]);
}
}
public static boolean isFlush(Card[] x, int y) {
int count = 0;
for(int index = 0; index < y; index++){
boolean comp = compareIfFlush(x[index], x[index + 1]);
if (comp = true){
count++;
}
}
if (count >= 5){
System.out.println("Congratulations! You have a flush!");
return true;
}
else{
System.out.println("Sorry, you do not have a flush.");
return false;
}
}
public static boolean compareIfFlush(Card c1, Card c2){
if (c1.suit != c2.suit){
return false;
}
return true;
}
}
我把大胆的,我遇到问题的一部分。 我得到的错误:“所需的数组,但exercise125poker.Deck发现”。 我需要一个工作,围绕这个错误,因为我不知道如何解决它,所以我卡住了。 任何人都可以帮忙吗?