2016-05-03 6 views
0

У меня есть этот выход:Getter возвращает ту же карту в качестве объекта

В методе ->костюм: Сердце Ранг: ЧЕТЫРЕ

Дом: Сердце - ЧЕТЫРЕ

в методе ->Костюм: Алмазная ранга: ACE

Дом: Алмазная - ACE (должно быть Heart-Four) Игрок: Diamond - ACE

После того, как я установил последнюю карту для дома wPlayer, также изменился, но я ничего не вижу в своем коде, который показывает, что он изменен. Даже при отладке.

И следующий код:

public class test{ 
    Card lastCard; 
    public test(){ 
     this.lastCard=null; 
    } 

    public void setLastCard(Card lcard){ 

     this.lastCard=lcard; 
    } 

    public Card getLastCard(){ 

     return this.lastCard; 
    } 

    static test hPlayer = new test(); 
    static test wPlayer = new test(); 

    public static Card generateCard(Random randoCard){ 
     Suit s = Suit.values()[randoCard.nextInt(Suit.values().length)]; 
     Rank r = Rank.values()[randoCard.nextInt(Rank.values().length)]; 
     System.out.println("IN METHOD--->Suit: "+s+" Rank: "+r); 
     return new Card(s,r); 
    } 

    public static void main(String[] args) throws InterruptedException { 
     Random randoCard = new Random(System.currentTimeMillis()); 

     hPlayer.setLastCard(generateCard(randoCard)); 
     System.out.println("House: " +hPlayer.getLastCard()); 
     TimeUnit.SECONDS.sleep(10); 

     wPlayer.setLastCard(generateCard(randoCard)); 
     System.out.println("House: " +hPlayer.getLastCard()+" Player: "+ wPlayer.getLastCard()); 

    } 
} 
+0

Не могли бы вы показать нам класс «Карта»? что напечатано «Card # toString»? – SomeJavaGuy

+0

Является ли карта использующей любые статические переменные – MadProgrammer

+0

Это был класс карты, который у меня был ниже, что помогло мне сделать что-то похожее на строку, я верю. Спасибо, что посмотрели на это. – user2462320

ответ

0

Поскольку вы не обеспечиваете класс карты, я предположил, что это будет основной класс значения:

public class Card { 
    private final Suit suit; 
    private final Rank rank; 

    public Card(Suit suit, Rank rank) { 
     this.suit = suit; 
     this.rank = rank; 
    } 

    @Override 
    public String toString() { 
     return "Card [suit=" + suit + ", rank=" + rank + "]"; 
    } 
} 

Запуск кода, то дает мне выход :

IN METHOD--->Suit: SPADES Rank: FOUR 
House: Card [suit=SPADES, rank=FOUR] 
IN METHOD--->Suit: CLUBS Rank: THREE 
House: Card [suit=SPADES, rank=FOUR] Player: Card [suit=CLUBS, rank=THREE] 

Поэтому кажется, что у вас либо была опечатка, которую вы исправили перед публикацией (см. для одного и того же игрока дважды), или ваша реализация карты не является классом значений (использует ли статические поля?)

+0

Прошу прощения, я сплю. но Да. Это было связано с моим методом toString, по-видимому, таким, каким я его раньше. Я использовал тот, который вы поставили выше. Большое спасибо за Вашу помощь. – user2462320

 Смежные вопросы

  • Нет связанных вопросов^_^