0

I have this output:

IN METHOD -> Suit: Heart Rank: FOUR

House: Heart - FOUR

IN METHOD ->Suit: Diamond Rank: ACE

House: Diamond - ACE (should be Heart-Four) Player: Diamond - ACE

After I set last card for wPlayer house is also changed, but I do not see anything in my code that shows it being changed. Even in debugging.

And the following code:

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() ); 

    }
}
Mxsky
  • 749
  • 9
  • 27

1 Answers1

0

Since you did not provide a Card class, I assumed it to be a basic value class:

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 + "]";
    }
}

Running your code then gives me the output:

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]

Therefore it seems like you either had a typo which you fixed before posting (reference to the same player twice) or your Card implementation is not a value class (does it use static fields?)

Boris van Katwijk
  • 2,998
  • 4
  • 17
  • 32
  • I apologize I feel asleep. but Yes It was something to do with my toString method apparently the way I had it before. I used the one you put above. Thank you very much for your help. – user2462320 May 03 '16 at 13:48