2015-11-04 2 views
2

Я в первый раз участвовал в Java, и у меня возникла небольшая проблема при создании программы, которая случайным образом выбирает две карты из стандартной колоды карт 52. Я пытаюсь создать заявление, которое будет сравнивать, если две карты имеют один и тот же рейтинг или тот же иск. Когда я попытался создать оператор if для этого, у меня появилась ошибка, говорящая, что я не могу сравнивать два одинаковых выражения. Мне было интересно, может ли кто-нибудь дать мне представление о том, что делать. Это мой код:Как сравнить случайно созданные карты в программе Java-карты?

package Assignment3; 

public class HouseOfCards { 
    public static void main(String[] args) { 
     int[] deck = new int[52]; 
     String[] suits = {"Spades", "Hearts", "Diamonds", "Clubs"}; 
     String[] ranks = {"Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"}; 

     for(int i = 0; i < deck.length; i++) deck[i] = i; 

     for(int i = 0; i < deck.length; i++) { 

      int index = (int)(Math.random() * deck.length); 
      int temp = deck[i]; 
      deck[i] = deck[index]; 
      deck[index] = temp; 
     } 

     for(int i = 0; i < 2; i++) { 
      String suit = suits[deck[i]/13]; 
      String rank = ranks[deck[i] % 13]; 
      System.out.println(rank + " of " + suit); 
     } 
    } 
} 

Моя попытка была:

if (suit==suit) 
    System.out.println("Cards share the same suit"); 
else 
    System.out.println("Cards do not share the same suit"); 
if (rank==rank) 
    System.out.println("Cards share the same rank"); 
else 
    System.out.println("Card do not share the same rank"); 
+0

Можете ли вы включить вашу попытку? – Szymon

+0

if (костюм == костюм) \t \t \t System.out.println («Карты имеют один и тот же костюм»); \t \t else \t \t \t System.out.println («Карты не имеют одного и того же костюма»); \t \t if (rank == rank) \t \t \t System.out.println («Карты имеют одинаковый ранг»); \t \t else \t \t \t System.out.println («Карточка не имеет одинакового ранга»); – arry617

ответ

1

Если вы хотите сравнить первые 2 карты, чтобы проверить, есть ли у них один и тот же костюм, или ранг, вы можете использовать код, приведенный ниже. Вам не нужен цикл, вы можете просто сравнить карты с индексами 0 и 1 из своего массива:

if (deck[0]/13 == deck[1]/13) { 
    System.out.println("Cards share the same suit"); 
} else { 
    System.out.println("Cards do not share the same suit"); 
} 
if (deck[0] % 13 == deck[1] % 13) { 
    System.out.println("Cards share the same rank"); 
} else { 
    System.out.println("Card do not share the same rank"); 
} 
+0

Где бы это реализовать в моем коде? – arry617

+0

Вместо 'for (int i = 0; i <2; i ++) {' loop. – Szymon

+0

Но разве мне не нужно, чтобы для цикла печатались две случайные карточки? – arry617