2015-01-12 113 views
0

我知道這個問題可能以前已經回答過,但我會圍繞圈子。我可以比較兩個字符串,但比較三個我不知道如何。我的代碼的目的是玩家擁有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; 
    } 


    } 
+2

你熟悉的''&&運營商? – RealSkeptic

+1

將所有三個套裝名稱放到一個'Set'中並調用'size()'。可能甚至是'score + =(15 --Set.size()* 5);' –

+0

爲了讓你的代碼更容易遵循,把suitName放入一個變量中。它會縮短if語句。 'String card1Suit = cardOne.getSuitName(); ... if(card1Suit.equals(card2Suit)&& card1Suit.equals(card3Suit)' – Ascalonian

回答

1

嘗試使用「和」運營商&&

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

基本上,如果卡二是一樣的卡之一,卡三是與第一張相同,第二張和第三張也是一樣的。你可以把它們放在一個if聲明,你可以五用+=

+0

Thanks guys guys this fixe my problem –

0

像這樣做增加了比分:

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; 
1

您可以使用流運營商或(||)和和(&&);

0

考慮到分數作爲整數數據類型,我們可以嘗試如下比較卡值..

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; 
     } 
    } 
} 

希望上面的代碼片斷幫助..