Exception in thread "main" java.lang.NullPointerException
at DeckOfCards2.deal(DeckOfCards2.java:63)
at DeckOfCards2.main(DeckOfCards2.java:19)
But can't figure out why. handArray is declared and initialized prior to deal method being called and deck is not null based on if I print contents of shuffle method. Can someone please explain why I'm getting the error please?
import javax.swing.JOptionPane;
public class DeckOfCards2 {
private static String[] suits = {"S", "H", "D", "C"};
private static String[] ranks = {"A", "2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K"};
public static void main(String[] args){
int[] deck = new int[52];
String ans;
final int DECK_SIZE = 52;
ans = JOptionPane.showInputDialog(null, "How many players are there?");
int players = Integer.parseInt(ans);
if (2 <= players && players <= 6){
int[][] handArray = new int[players][];
deal(deck, DECK_SIZE, players, handArray);
for (int i = 0; i < handArray.length; i++) {
for (int j = 0; j <handArray[i].length; j++){
System.out.print(handArray[i][j] + " ");
}
}
}
else{
JOptionPane.showMessageDialog(null, "That amount of players is invalid.");
}
}
public static void shuffle(int[]deck) {
//Initialize cards
for (int i = 0; i < deck.length; i++)
deck[i] = i;
//Shuffle the cards for 2-51
for (int i = 51; i > 2; i--) {
//Generate and index randomly
int index = (int)(Math.random() * deck.length);
int temp = deck[i];
deck [i] = deck[index];
deck[index] = temp;
}
//Shuffle card for 0-1
for (int i = 1; i < 2; i++) {
int index = 0 + (int)(Math.random() * 2);
int temp = deck[i];
deck [i] = deck[index];
deck[index] = temp;
}
}
//Deal the cards
public static void deal(int[] deck, int DECK_SIZE, int players, int[][] handArray) {
shuffle(deck);
int handSize = (int) Math.ceil(DECK_SIZE / players);
for (int k = 0; k < deck.length; k++){
for (int i = 0; i < handSize; i++){
for (int j = 0; j < players; j++){
handArray[j][i] = deck[k];
}
}
}
}
}

New Topic/Question
Reply



MultiQuote




|