java - 德州扑克识别一对

标签 java arraylist poker

我的程序只有在首先检查一对后才能识别一对。当首先检查一对时,它发现没问题。但是当我先检查两对然后检查一对时,它没有找到它。任何帮助将不胜感激。

package card.game.simulator;

import java.util.ArrayList;

public class RankingUtility {
private RankingEnum rank;

public String getRankOfHand(ArrayList<Card> hand) {
    System.out.printf("%s\n", hand.toString());
    ArrayList<Card> rankingCards = getTwoPair(hand);
    if(rankingCards != null) {
        return "Two Pair!";
    }
    System.out.printf("%s\n", hand.toString());
    rankingCards = getOnePair(hand);
    if(rankingCards != null) {
        return "One Pair!";
    }
    System.out.printf("%s\n", hand.toString());
    return "You got nuthin...";
}

public boolean isSameSuit(ArrayList<Card> hand) {
    CardSuitEnum suit = hand.get(0).getSuit();
    for(Card card : hand) {
        if(card.getSuit() != suit) {
            return false;
        }
    }
    return true;
}

public ArrayList<Card> checkPair(ArrayList<Card> hand) {
    ArrayList<Card> checkedPair = new ArrayList<>();
    for(Card card1 : hand) {
        checkedPair.add(card1);
        for(Card card2 : hand) {
            if(!card1.equals(card2) && card1.getFace().equals(card2.getFace())) {
                checkedPair.add(card2);
                return checkedPair;
            }
        }
        checkedPair.clear();
    }
    return null;
}

public ArrayList<Card> getTwoPair(ArrayList<Card> hand) {
    ArrayList<Card> twoPair = new ArrayList<>();
    ArrayList<Card> checkedPair = checkPair(hand);
    if(checkedPair != null) {
        twoPair.addAll(checkedPair);
        hand.removeAll(checkedPair);
    }
    checkedPair = checkPair(hand);
    if(checkedPair != null) {
        twoPair.addAll(checkedPair);
        return twoPair;
    }
    return null;
}

public ArrayList<Card> getOnePair(ArrayList<Card> hand) {
    return checkPair(hand);
}
}

最佳答案

checkTwoPair 中,您正在执行 hand.removeAll()。这是将其从底层 ArrayList 中移除。这就是您之后找不到它的原因。

关于java - 德州扑克识别一对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14447504/

相关文章:

ios - 扑克手排名循环组合

algorithm - 在“二加二”扑克手牌评估器上,您如何从传给它的 7 张牌中找出最好的 5 张牌组合?

java - hibernate 搜索+ spring3 + jpa

java - 使用 BufferedImage 读取和写入图像文件

java - OpenCV 中 NativeCameraView 和 JavaCameraView 的区别

java - 从Android中的辅助线程调用主线程

Java - 如何在不排序的情况下检查扑克牌中的顺子?

java arraylist ensureCapacity 不工作

java - 如何将 arrayList.toString() 转换为实际的数组列表

java - Arrays.asList(...).contains(...) 是如何工作的?