,五手牌游戏,无法弄清楚,badugi&同一样四个

时间:2016-10-08 15:55:35

标签: java poker

我试图在五张牌扑克手中找到四种。但它不起作用,无法弄清楚原因。

public boolean hasFourOfaKind(String hand) {
        int counter = 0;
        char x = 0;

        for (int i = 0; i < hand.length(); i++) 
        {
            if (i == 0) {
                x = hand.charAt(0);
            } else if (x == hand.charAt(i)) {
                counter++;

            }
        }
        if (counter >= 4) {
            return true;
        } else {
            return false;
        }
    }

同样的问题在这里我试图检查给定的四张牌是否是一个badugi

    public boolean hasFourCardBadugi(String hand) {
        int diffcounter = 0;
        char badugi = 0;

        for (int i = 0; i < hand.length(); i++) {
            if (i == 0) {
                badugi = hand.charAt(0);
            } else if (badugi != hand.charAt(i)) {
                diffcounter++;
            }
        }
        if (diffcounter >= 10) {
            return true;
        } else {
            return false;
        }
    }

1 个答案:

答案 0 :(得分:0)

让我们来看看你的for循环。

    for (int i = 0; i < hand.length(); i++) 
    {
        if (i == 0) {
            x = hand.charAt(0);
        } else if (x == hand.charAt(i)) {
            counter++;
        }
    }

在这部分

        if (i == 0) {
            x = hand.charAt(0);
        }

您将x设置为第一张卡片。但你永远不会算那张卡。你需要添加:

        if (i == 0) {
            x = hand.charAt(0);
            counter++;
        }

当然这仍然存在一个问题,就是它不能检测到四种类型与第一张卡不匹配的手(ace两两两两),但你应该能够解决这个问题,因为基本的bug是固定的。一种方法就是涉及第二个循环。