我正在制作一个扑克手牌代码,用于寻找手中的各种扑克牌。我实施了每种方法后,我正在编写测试。
我编写了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());
}
答案 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;}