I have been working on an Uno game for my intro to Java class. The deck is fully functional and all code compiles. I get a runtime StackOverflowError on many many lines. When making a new Player or Game object, I get these errors.
Thanks again for the help!
public class Game
{
private Player player1;
private Player player2;
private Player player3;
private Deck thisDeck;
private Card currentCard;
public Game()
{
player1 = new Player(1,0);
player2 = new Player(2,1);
player3 = new Player(3,1);
thisDeck = new Deck();
currentCard = null;
startGame();
}
public void startGame()
{
setCurrentCard(thisDeck.drawRandomCard());
System.out.println("The game has been started by drawing a random card and setting it as the current card");
currentCard.print();
}
public void setCurrentCard(Card newCurrentCard)
{
currentCard = newCurrentCard;
System.out.println("The current card has been changed");
}
public Player getPlayer1()
{
return player1;
}
public Player getPlayer2()
{
return player2;
}
public Player getPlayer3()
{
return player3;
}
public Card getCurrentCard()
{
return currentCard;
}
}
import java.util.ArrayList;
public class Player
{
private int playerID;
private int playerType; //0 is human, 1 is computer
private Deck thisDeck;
private Game thisGame;
private ArrayList<Card> hand;
private ArrayList<Card> handToPlay;
public Player(int pPlayerID, int pPlayerType)
{
playerID = pPlayerID;
playerType = pPlayerType;
thisDeck = new Deck();
thisGame = new Game();
hand = new ArrayList<Card>();
handToPlay = new ArrayList<Card>();
}
public void dealtAHand()
{
hand.add(thisDeck.drawRandomCard());
hand.add(thisDeck.drawRandomCard());
hand.add(thisDeck.drawRandomCard());
hand.add(thisDeck.drawRandomCard());
hand.add(thisDeck.drawRandomCard());
hand.add(thisDeck.drawRandomCard());
hand.add(thisDeck.drawRandomCard());
}
public void createHandToPlay()
{
Card currentCard = thisGame.getCurrentCard();
for(Card thisCard: hand)
{
if(thisCard.getColor().equals(currentCard.getColor()) || thisCard.getValue()== currentCard.getValue())
{
handToPlay.add(thisCard);
System.out.println("A card has been added to Hand To Play");
}
if(thisCard.getValue()==13 || thisCard.getValue()==14)
{
handToPlay.add(thisCard);
System.out.println("A wild card has been added to Hand To Play");
}
}
for(Card thisCard: handToPlay)
{
thisCard.print();
}
}
public void takeAComputerTurn()
{
createHandToPlay();
if(handToPlay.isEmpty())
{
drawACard();
}
else
{
playACard();
}
}
public void takeAHumanTurn()
{
createHandToPlay();
if(handToPlay.isEmpty())
{
drawACard();
System.out.println("As you had no cards to play in your hand, you have drawn a card");
}
else
{
System.out.println("Based on these available choices, which card would you like to play?");
}
}
public void playACard()
{
//int randomIndex = randomGenerator.nextInt(handToPlay.size());
//Card cardToPlay = handToPlay.get(randomIndex);
//System.out.println("The card to play has been randomly chosen");
Card cardToPlay = handToPlay.get(0);
System.out.println("The card to play has been chosen (first card in the ArrayList)");
thisGame.setCurrentCard(cardToPlay);
thisGame.getCurrentCard().print();
handToPlay.clear();
}
public void drawACard()
{
hand.add(thisDeck.drawRandomCard());
}
public int getPlayerType()
{
return playerType;
}
}
import java.util.ArrayList;
import java.util.Random;
public class Deck
{
private Card thisCard;
private ArrayList<Card> deck;
private ArrayList<String> colors;
private ArrayList<Integer> values;
private Random randomGenerator;
public Deck()
{
deck = new ArrayList<Card>();
randomGenerator = new Random();
initalizeColors();
initalizeValues();
createDeck();
}
private void initalizeColors()
{
colors = new ArrayList<String>();
colors.add("Red");
colors.add("Yellow");
colors.add("Green");
colors.add("Blue");
}
private void initalizeValues()
{
values = new ArrayList<Integer>();
values.add(0);
values.add(1);
values.add(2);
values.add(3);
values.add(4);
values.add(5);
values.add(6);
values.add(7);
values.add(8);
values.add(9);
values.add(10);
values.add(11);
values.add(12);
values.add(13);
values.add(14);
}
public void createDeck()
{
for(int thisValue:values)
{
if(thisValue==0)
{
for(String thisColor:colors)
{
thisCard = new Card(thisColor,thisValue);
deck.add(thisCard);
}
}
if(thisValue>=1 && thisValue<=9)
{
for(String thisColor:colors)
{
thisCard = new Card(thisColor,thisValue);
deck.add(thisCard);
thisCard = new Card(thisColor,thisValue);
deck.add(thisCard);
}
}
if(thisValue>=10 && thisValue<=12)
{
for(String thisColor:colors)
{
thisCard = new ActionCard(thisColor,thisValue);
deck.add(thisCard);
thisCard = new ActionCard(thisColor,thisValue);
deck.add(thisCard);
}
}
if(thisValue==13)
{
for(String thisColor:colors)
{
thisCard = new WildCard(null,thisValue);
deck.add(thisCard);
}
}
if(thisValue==14)
{
for(String thisColor:colors)
{
thisCard = new WildActionCard(null,thisValue);
deck.add(thisCard);
}
}
}
}
public Card drawCardByIndex(int index)
{
thisCard = deck.get(index);
deck.remove(index);
return thisCard;
}
public Card drawRandomCard()
{
int randomIndex = randomGenerator.nextInt(deck.size());
thisCard = drawCardByIndex(randomIndex);
return thisCard;
}
public void printDeckInfo()
{
for(Card thisCard:deck)
{
thisCard.print();
}
}
}
Here are the errors I receive in the terminal (abbreviated to fit character limit):
java.lang.StackOverflowError
at java.util.Arrays.copyOf(Arrays.java:3181)
at java.util.ArrayList.grow(ArrayList.java:261)
at java.util.ArrayList.ensureExplicitCapacity(ArrayList.java:235)
at java.util.ArrayList.ensureCapacityInternal(ArrayList.java:227)
at java.util.ArrayList.add(ArrayList.java:458)
at Deck.initalizeColors(Deck.java:24)
at Deck.<init>(Deck.java:16)
at Player.<init>(Player.java:16)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
at Player.<init>(Player.java:17)
at Game.<init>(Game.java:12)
mainmethod (and also the error stack trace)?GameandPlayer. When you create a newGame, it creates a newPlayer, which creates a newGame, which creates a newPlayer..Gamein the constructor ofPlayer, you could have a method for registering the player into a game (Player#register(Game game)). On the other hand, it might be enough that only theGameknows eachPlayerinvolved (and players are ignorant of the game they're in). As the game advances,Gamewould then "push" relevant information to each player throughdealtAHand(e.g.Player#dealtAHand(Card currentCard)). Using the latter approach, you could remove theGamereference (and with some more refactoring, also theDeckreference) fromPlayer.