2015-11-03 101 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