2015-11-03 102 views
1

我寫了這個隨機從卡組中挑選兩張卡片的代碼,但我遇到了麻煩,試圖讓它進行比較,我遇到了一些問題並希望解決這個問題一步一步但不確定如何比較兩個語句只有一個定義的變量?比較兩個語句與一個定義變量java

package question1; 

    public class HouseOfCards { 

    public static void main(String[] args) { 

     String [] SuitNames= { 
       "Spades","Diamonds","Clubs","Hearts" 
     }; 
     String [] CardNames= { 
       "Ace","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King" 
     }; 
     String SuitName="hi",SuitName2="die"; 
     String CardName="hi", CardName2="die"; 
     for (int i=0; i<=1; i++){ 
      int numCard=52; 
      int randNum=(int)(Math.random() * numCard); 
      int randNum2=(int)(Math.random() * numCard); 
      int suitNum = randNum/13; 
      int cardNum = randNum % 13; 
      int suitNum2 = randNum2/13; 
      int cardNum2 = randNum2 % 13; 
      SuitName = SuitNames[suitNum]; 
      CardName = CardNames[cardNum]; 
      SuitName2 = SuitNames [suitNum2]; 
      CardName2 = CardNames[cardNum2]; 
      System.out.println(CardName + " of " + SuitName); 
     } 
     if (CardName.equals(CardName2)){ 
      System.out.println("Same Rank"); 
     } 

     else if (SuitName.equals(SuitName2)){ 
      System.out.println("Same Suit"); 
     } 
    }  
} 

我修改了代碼,以便它顯示如果兩個隨手拈卡或隨機挑卡之間的花色相同,但有時它不打印語句之間的相同等級的,爲什麼?

+0

'的Integer.parseInt(CardName);'不會',如果包含CardNames'像「王牌」字樣的工作,「一」等 –

+0

這是真的,這是我嘗試編碼時的嘗試和錯誤時刻,這就是爲什麼我在這裏找出可以做什麼來解決它的原因? – Phantom1421

+0

您需要有一些方法來查找卡片的數值。你可以使用一個HashMap,或一個大開關或if/else語句,或者你可以使用一個枚舉來表示你的卡名。 –

回答

0

嘗試是這樣的:

public class HouseOfCards { 

public class HouseOfCards { 

public static void main(String[] args) { 
    int Spades=1; 
    String [] suitNames= { 
      "Spades","Diamonds","Clubs","Hearts" 
    }; 
    String [] cardNames= { 
      "Ace","One","Two","Three","Four","Five","Six","Seven","Eight","Nine","Ten","Jack","Queen","King" 
    }; 
    String card1=""; 
    String card2=""; 
    String suitName=""; 
    String cardName1=""; 
    String suitName2=""; 
    String cardName2=""; 
    int cardPosition1 = 0; 
    int cardPosition2 = 0; 
    for (int i=0; i<=1; i++){ 
     int numCard=52; 
     int randNum=(int)(Math.random() * numCard); 
     int suitNum = randNum/13; 
     int cardNum = randNum % 13; 
     if(i==0) {   
      suitName = suitNames[suitNum]; 
      cardName1 = cardNames[cardNum]; 
      card1 = cardName1+" of "+suitName; 
     } 
     else { 
      suitName2 = suitNames[suitNum]; 
      cardName2 = cardNames[cardNum]; 
      card2 = cardName2+" of "+suitName2; 
     } 
    } 
    System.out.println(card1); 
    System.out.println(card2); 

    for (int i = 0; i < cardNames.length; i++) { 
     if(cardName1.equals(cardNames[i])) { 
      cardPosition1 = i; 
     } 
     if(cardName2.equals(cardNames[i])) { 
      cardPosition2 = i; 
     } 
    } 
    System.out.println(cardPosition1); 
    System.out.println(cardPosition2); 
    if(cardPosition1>cardPosition2) { 
     System.out.println("First card has bigger number"); 
    } 
    else if (cardPosition1<cardPosition2) { 
     System.out.println("Second card has bigger number"); 
    } 
    else if (cardPosition1==cardPosition2) { 
     System.out.println("Equal cards (probably different suites you can check it further)"); 
    } 
    } 
} 
+0

我喜歡這個代碼,但我需要比較它,看看這兩張牌是否具有相同的等級或套裝或兩者兼而有之?它通過說什麼卡更高,但不知道它如何相關,除非... – Phantom1421

+0

嗯,這取決於一個任務,我真的不是卡,但在字符串[] cardNames你有「王牌」,「一」 。不確定,但不是真的嗎?例如,如果你想讓Ace成爲「最強」的牌,就把它放到數組的最後。 – Sekula1991