比较三个字符串

Comparing three strings

我知道这个问题以前可能有人回答过,但我在兜圈子。我可以很好地比较两个字符串,但我不确定如何比较三个字符串。我的代码的目的是玩家有 3 张牌,如果两张牌的花色相同,则玩家将获得 5 分,如果所有三张牌都相同,则玩家将获得 10 分。我可以加 5 分,但只有三个都正确时我才能加 10 分。有人可以帮忙吗?

这是我的代码

    private void setScore()
    {
        score = cardOne.setScore() + cardTwo.setScore() + cardThree.setScore();
        if(cardOne.getSuitName().equals(cardTwo.getSuitName()))
        if(cardOne.getSuitName().equals(cardThree.getSuitName()))
        if(cardTwo.getSuitName().equals(cardThree.getSuitName()))
    {
        score = score + 5;
    }
        if(cardOne.getSuitName().equals(cardTwo.getSuitName().equals(cardThree.getSuitName())))
    {
        score = score + 5;
    }


    }

尝试使用 "and" 运算符 &&:

if(cardOne.getSuitName().equals(cardTwo.getSuitName()) && cardOne.getSuitName().equals(cardThree.getSuitName()))
{
    score = score + 5;
}
if(cardOne.getSuitName().equals(cardTwo.getSuitName()) && cardOne.getSuitName().equals(cardThree.getSuitName())) 
{
    score += 5;
}

基本上,如果卡二和卡一一样,卡三和卡一一样,那么卡二和卡三也是一样的。您可以将它们放在一个 if 语句中,您可以使用 +=

将分数增加 5

这样做:

Set<String> suits = new HashSet<>(Arrays.asList(
        cardOne.getSuitName(),cardTwo.getSuitName(),cardThree.getSuitName()));
if(suits.size() == 1) score += 10;
else if(suits.size() == 2) score += 5;

您可以使用流运算符或 (||) and and(&&);

将分数视为整数数据类型,我们可以尝试如下比较卡值..

private void setScore()
{
    int score = cardOne.setScore() + cardTwo.setScore() + cardThree.setScore();
    // check if any two cards are same
    if(cardOne.getSuitName().equals(cardTwo.getSuitName())   ||
                    cardOne.getSuitName().equals(cardThree.getSuitName()) ||
                    cardTwo.getSuitName().equals(cardThree.getSuitName())){
        score +=  5;
        // check if all three cards are same
        if(cardOne.getSuitName().equals(cardTwo.getSuitName()) && cardTwo.getSuitName().equals(cardThree.getSuitName())){
            score +=  5;
        }
    }
}

希望上面的代码片段对您有所帮助..