Java:扑克之手

时间:2014-09-10 20:54:21

标签: java poker

所以,我必须使用函数/方法和数组创建一个扑克手程序。

以下是我需要的示例输出:

Enter five numeric cards, no face cards. Use 2 - 9.Card 1: 8 

Card 2: 7
Card 3: 8
Card 4: 2
Card 5: 7
Two Pair!

Enter five numeric cards, no face cards. Use 2 - 9.
Card 1: 4 
Card 2: 5
Card 3: 6
Card 4: 8
Card 5: 7
Straight!

Enter five numeric cards, no face cards. Use 2 - 9.
Card 1: 9
Card 2: 2
Card 3: 3
Card 4: 4
Card 5: 5
High Card!

这是我的代码(我在判断是否有一对,三种类型等方面存在逻辑问题)。它们是方法/功能。所以,如果我能弄清楚如何做1或2个,那么应该从那里轻而易举:

import java.util.Scanner;

public class Assignment4 
{
    public static void main(String args[])
    {
        final int LEN = 5;
        int[] hand = new int[LEN];

    Scanner input = new Scanner(System.in);

    //input the hand
    System.out.println("Enter five numeric cards, no face cards. Use 2-9.");
    for (int index = 0; index < hand.length; index++) {
        System.out.print("Card " + (index + 1) + ": ");
        hand[index] = input.nextInt();
    }

    //sort the collection
    bubbleSortCards(hand);

    //determine players hand type
    //flow of evaluation -> checking complex hands first  
    if (containsFullHouse(hand)) {
        System.out.println("Full House!");
    } else if (containsStraight(hand)) {
        System.out.println("Straight!");
    } else if (containsFourOfaKind(hand)) {
        System.out.println("Four of a Kind!");
    } else if (containsThreeOfaKind(hand)) {
        System.out.println("Three of a Kind!");
    } else if (containsTwoPair(hand)) {
        System.out.println("Two Pair!");
    } else if (containsPair(hand)) {
        System.out.println("Pair!");
    } else 
        System.out.println("High Card!");   
}

这是从作业说明中推荐的方法:

public class PokerHand
{
    public static void main(String args[])
    {
        int hand[] = {5, 2, 2, 3, 8};

        if (containsAPair(hand)) {
                System.out.println("Pair!");
        } else {
                System.out.println("Not a pair!");
        }
}

public static boolean containsAPair(int hand[]) {
        // Your code here... don’t return true every time...
        return true;
}

}

如果需要更多信息,我将非常乐意提供相关信息。谢谢!

2 个答案:

答案 0 :(得分:1)

我建议您计算一只手的内容并生成一系列计数,而不是对手进行排序,其中数组的i th 元素的数量为价值为i的卡片。然后,您应该能够弄清楚如何使用该数组来决定它是否是特定类型的手。

答案 1 :(得分:1)

由于这是作业,我会指导你开始帮助你思考解决方案。

在您的帖子中,您需要为containsFullHouse()containsStraight()等创建代码。所以...

  • 抢一副纸牌。取下面部卡和王牌。
  • 想象一下你在玩扑克。给自己一个四分之一的牌。想想你作为一个人如何决定你拥有什么。我亲自sort我的手,然后计算每张卡的发生率。如果我有4个相同的值,那么我有四个可以停止。
  • 好的,现在是直的。我再次握手。如果每张卡片c都有c + 1作为下一张卡片的值,除了最后一张卡片,我有一张笔。
  • 重复此过程,直到您完成最低价值的牌。