2016-04-10 2 views
-1

Как сравнить два возвращаемых значения объекта? Потому что, когда я делаю это в своем коде, и возвращаемые значения различаются каждый раз. Вот мой код:Сравнение двух возвращаемых значений объекта

public static void Card_Initialization(){ 

Red_Dog c1 = new Red_Dog(); 
Red_Dog c2 = new Red_Dog(); 
Cards_Match(c1); 
System.out.println(card_num+card_suit); 
Cards_Match(c2); 
System.out.println(card_num+card_suit); 
System.out.println(Cards_Match(c1) == Cards_Match(c2));//to check really if it is equal 
} 

     public static int Cards_Match(Red_Dog rd){ 
      card = (int)(Math.random() * deck.length); 
      if(card >= 0 && card <=3) 
     { 
      card_num = cards[0]; 

     } 
     else if(card >= 4 && card <=7) 
     { 
      card_num = cards[1]; 
     } 
     else if(card >= 8 && card <=11) 
     { 
      card_num = cards[2]; 
     } 
     else if(card >= 12 && card <=15) 
     { 
      card_num = cards[3]; 
     } 
     else if(card >= 16 && card <=19) 
     { 
      card_num = cards[4]; 
     } 
     else if(card >= 20 && card <=23) 
     { 
      card_num = cards[5]; 
     } 
     else if(card >= 24 && card <=27) 
     { 
      card_num = cards[6]; 
     } 
     else if(card >= 28 && card <=31) 
     { 
      card_num = cards[7]; 
     } 
     else if(card >= 32 && card <=35) 
     { 
      card_num = cards[8]; 
     } 
     else if(card >= 36 && card <=39) 
     { 
      card_num = cards[9]; 
     } 
     else if(card >= 40 && card <=43) 
     { 
      card_num = cards[10]; 
     } 
     else if(card >= 44 && card <=47) 
     { 
      card_num = cards[11]; 
     } 
     else if(card >= 48 && card <=51) 
     { 
      card_num = cards[12]; 
     } 

     if(card % 4 == 0) 
     { 
      card_suit = suits[0]; 
     } 

     else if(card % 4 == 1) 
     { 
      card_suit = suits[1]; 
     } 

     else if(card % 4 == 2) 
     { 
      card_suit = suits[2]; 
     } 

     else if(card % 4 == 3) 
     { 
      card_suit = suits[3]; 
     } 

     return card; 
     } 

Результат: первый пробег: AceSpades AceSpades ложные

второй пробег: AceSpades AceSpades истинные

+0

Поделитесь своими исходными кодами для класса Red_Dog и метода Card_Match. – Learner

+0

Waht is 'Cards_Match()'? –

+0

Привет, я разместил здесь код: http://shrib.com/red_dog_card Вы можете получить к нему доступ. –

ответ

3

В Java (и многие Передавать по ссылке языков), оператор == сравнивает местоположение памяти, в котором хранятся объекты. Поскольку это два разных объекта, они хранятся в разных ячейках памяти.

Вы нужно использовать .equals() метод как это:

c1.equals(c2) 

Вам нужно будет написать метод равно вашего класса, чтобы проверить, если карты равны друг другу, и в этом случае путем сравнения и их номер и костюм.

+0

Я внес изменения, но все равно. Результат по-прежнему различны: Результат: 1-й пробег: AceSpades AceSpades ложные второй прогон: AceSpades AceSpades истинные –

+0

я изменил его к этому: System.out.println (c1.equals (c2)); но результат все тот же. –

+0

Cards_Match не является объектом в коде OP. – RubioRic

0

Я считаю, что вы должны изменить это:

System.out.println(Cards_Match(c1) == Cards_Match(c2)); 

в

System.out.println(c1.equals(c2)); 
0

Ваше именование у нас запутался. Cards_Match не является объектом!

Метод, который генерирует случайных номеров в зависимости от объектов, которые вы не указали в своем запросе. Если вы сравниваете сгенерированные случайные числа int, вы будете получать разные результаты каждый раз.

Я думаю, что вы пытаетесь реализовать: выберите карту 1 случайно, выберите другую карту 2 случайно, а затем сравните ее. Но это не работает с остальной частью вашей программы.

Пожалуйста, используйте соглашения об именах java в будущем. http://www.oracle.com/technetwork/java/codeconventions-135099.html

+0

О, я сожалею об этом. Я буду использовать соглашения об именах для будущего использования. Спасибо за напоминание. поэтому в вопросе, как я могу сравнить два случайных значения? –

+0

Вы можете сравнить это, но вы получите разные результаты. Вы должны изменить свой алгоритм. Внедрите объектную карту с методом равным и другим методом, чтобы случайно выбрать карту из колоды, а затем сравнить две полученные карты. – RubioRic

+0

Объектная карта будет содержать card_num и card_suit. Ваш метод equals должен возвратиться, если две карты имеют одинаковые card_num и card_suit. – RubioRic