Ich habe ein Problem in meinem Java-Programm Black Jack. Ich kann nicht scheinen, meine "this.cards [o ++]" auszuarbeiten, wie es immer in ArrayIndexOutOfBoundException geht. Aber wenn ich es in "this.cards [j] ODER this.cards [i]" ändere, erhält es keinen Fehler, aber ich weiß, dass es falsch ist.Shuffling und Array Probleme Java
Hier ist der Fehler für:
**this.cards[o++]**
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 13
at CardDeck.<init>(CardDeck.java:18)
at BlackJoker.main(BlackJoker.java:17)
**this.cards[j]**
null
Kc
Qc
8c
null
null
**this.cards[i]**
null
Ac
Ah
null
null
Ad
Hier ist mein Code:
import java.util.*;
public class CardDeck
{
private String[] ranks = {"2", "3", "4", "5", "6", "7", "8", "9", "10",
"J", "Q", "K", "A" };
private char[] suits = {'s','h','d','c'};
private Card[] cards = new Card[13];
private int currentCard;
CardDeck()
{
Card newCard;
int o = 0;
for(int i=0; i<this.suits.length; i++)
{
for(int j=0; j<this.ranks.length; j++)
{
this.cards[o++] = new Card(this.ranks[j], this.suits[i]);
}
}
this.shuffle();
}
public void testing() //just for testing
{
System.out.println(this.suits[0]);
}
public Card drawNextCard()
{
return cards[currentCard++];
}
private void shuffle()
{
Card[] tmp = new Card[13];
for (int i = 0; i < cards.length; i++)
{
int index = (int)(Math.random() * (cards.length));
tmp[index] = cards[i];
cards[i] = cards[index];
cards[index] = tmp[i];
}
}
}
public class BlackJoker
{
public static void main(String[] args)
{
CardDeck cardDeck = new CardDeck();
//cardDeck.testing();
System.out.println(cardDeck.drawNextCard());
System.out.println(cardDeck.drawNextCard());
System.out.println(cardDeck.drawNextCard());
System.out.println(cardDeck.drawNextCard());
System.out.println(cardDeck.drawNextCard());
System.out.println(cardDeck.drawNextCard());
//System.out.println(cardDeck.drawNextCard());
}
}
Beachten Sie, dass "this.cards [j]" gibt mir eine Konstante "c" passt dann "this.cards [i]" gibt mir eine Konstante "A" (ace). Kann mir bitte jemand erklären, was ich falsch gemacht habe? Vielen Dank für jede Hilfe und Beratung. – Mia
Am besten Karten und Deck, wo Deck eine Sammlung von Karten hat. Sie können die eingebaute Methode Collections.shuffle() verwenden. Https://www.tutorialspoint.com/java/util/collections_shuffle.htm – duffymo