Я почти закончил игру, но я не уверен, почему она падает после нескольких раундов. Я считаю, что это как-то связано с тем, как написан класс колод. Это было предоставлено учителем, но мне, возможно, придется это исправить.
Я подумал, что, возможно, после нескольких раундов массивы слишком переполнены или что-то в этом роде, поэтому я попытался добавить метод, чтобы очистить их. Это не сработало, и я не думаю, что это проблема, но я не уверен.
class deck{
private String [] cards = {"A","K","Q","J","10","9","8","7","6","5","4","3","2"};
private int cardCount = 1;
private boolean isShuffled = false;
//**********Shuffle cards method****************************
private void shuffleCards(){//shuffle cards method
for (int i = 0; i < cards.length; i++) {
int index = (int)(Math.random() * 13);
String temp = cards[i];
cards[i] = cards[index];
cards[index] = temp;
}
isShuffled = true;
}
//********Ensure the cards get shuffled before dealing******
public String getCards(){
if (isShuffled == true){
cardCount++;
return cards[cardCount];
}
else {
shuffleCards();//shuffle if they have not
cardCount++;
return cards[cardCount];
}
}
//********Show cards method*********************************
public void showCards(String [] theirCards){
for (int i = 0; i < theirCards.length; i++) {
if(theirCards[i] == null){
continue;
}
System.out.print(theirCards[i] + " ");
}
}
public void clearCards(){
cards = null;
cards = null;
}
//*******Card value method**********************************
public int getCardValues(String tempChar){
int indValues = 1;
switch (tempChar){
case "A": indValues = 1; break;
blah blah blah
case "3": indValues = 3; break;
case "2": indValues = 2;
}
return indValues;
}
}
Я ожидаю, что игра будет повторяться до тех пор, пока я не уйду или не закончу деньги из-за ставок, но вместо этого примерно через 3 игры я получаю эту ошибку:
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 13
at deck.getCards(Baccarat.java:248)
at playerObjects.setComputersCards(Baccarat.java:177)
at Baccarat.main(Baccarat.java:19)