Java PokerHand方法

时间:2016-02-04 18:15:44

标签: java junit poker

我正在制作一个扑克手牌代码,用于寻找手中的各种扑克牌。我实施了每种方法后,我正在编写测试。

我编写了isFlush()代码,用于测试手是否为同花。

public boolean isFlush()
{

for (int i = 0; i < 4; i++)
{
    if (cards.get(i).getSuit() == cards.get(i + 1).getSuit())
    {
        return true;
}
    }
    return false;
}

这是相应的测试,它成功构建但测试实际上失败了。它说预期是假的,但却是真的。我在代码中做错了什么不能正确测试刷新?

@Test public void testIsFlush()
{

 pokerHand.add(aceClubs);
 pokerHand.add(kingSpades);
 pokerHand.add(threeClubs);
 pokerHand.add(fourClubs);
 pokerHand.add(fiveClubs);

 assertEquals(false, pokerHand.isFlush());
 }  

4 个答案:

答案 0 :(得分:3)

public boolean isFlush()
{
    for (int i = 0; i < 4; i++)
    {
        if( !cards.get(i).getSuit().equals(cards.get(i + 1).getSuit()) )
        {
            return false;
        }
    }
    return true;
}

最好检查两张连续牌是否相等。

答案 1 :(得分:0)

我认为西装是一个字符串...所以更好的是用equals方法比较它们==。 另一方面,你的方法,如果前两张牌有相同的套装将返回总是真的没有检查其他卡...你应该重写该方法,然后再试一次。

答案 2 :(得分:0)

您只检查第一张和第二张牌,因为您立即返回true。检查所有卡片和and值。

答案 3 :(得分:-1)

for (int i = 0; i < 4; i++)只需检查前4张牌,你需要5张牌才能冲洗。

 if (cards.get(i).getSuit() == cards.get(i + 1).getSuit())
    {
        return true; }
    }
    return false; }

这将只检查前两张牌,因为它会在检查牌0和1后立即返回。

另外,如果您将套装作为字符串进行检查,则应使用String.equals()

编辑:根据要求,我将提供代码示例。

public boolean isFlush()
{

boolean condition=true;
for (int i = 0; (i <4)&&condition; i++)
{
    if (!(cards.get(i).getSuit() == cards.get(i + 1).getSuit()))
    {
        condition=false;
    }

    }
return condition;}