I am working on a GoFish game in java in my take turn method I wrote I receive a Null Exception Error, and I know that means I have a null object.
When going through my code I can not figure out why I am getting this. When I ask the user for number of player it creates that number. SO why would I get a null error for this
if((P.cardsInHand[P.getnumCardsInHand()].getRank()) == rank){
return P;
}
private Player[] numPlayers;
int playerName;
int requestedcard;
public void numPlayers(){
Scanner input = new Scanner(System.in);
System.out.println("How many players want to play");
numPlayer = input.nextInt();
if((numPlayer < 2) || (numPlayer > 6)){
System.out.println("How many players want to play");
numPlayer = input.nextInt();
}
numPlayers = new Player[numPlayer];
for (int i = 0; i < numPlayer; i++){
System.out.println("Player Number(Start with 0)");
playerName = input.nextInt();
numPlayers[i] = new Player(playerName);
}
requestedPlayer = numPlayers[0];
}
public Player taketurn(Player P){
previousPlayer = P;
System.out.println(P);
//set up scanner
Scanner input = new Scanner(System.in);
//declare variables
int player;
int rank;
int numMatches = 0;
System.out.println("Player " + previousPlayer.getnumplayerNumber() + " turn");
//Player P ask what player cars it want to sk for
System.out.println("what Player Do you want to ask");
player = input.nextInt();
if(player > numPlayer){
System.out.println("what Player Do you want to ask");
player = input.nextInt();
}
//data type of Player is set to the player that Play P requested
requestedPlayer = numPlayers[player];
//request card
System.out.println("What rank do you want(2-10 = the corresponding number rank on the card, 11 = jack, 12 = queen, 13 = king, 14 = ace)");
rank = input.nextInt();
for(int i = 1; i < (requestedPlayer.getnumCardsInHand()); i++){
if((requestedPlayer.cardsInHand[i].getRank()) == rank){
// if requested rank == to the player that was aksed for the card
//the card will be transfered and removed from hand
requestedPlayer.cardsInHand[i].test1();
System.out.println("Card of rank " + rank + " are being transfered");
//requestedPlayer.cardsInHand[i].test();
for(int j = 1; j < (requestedPlayer.getnumCardsInHand()); j++){
P.transfercard(i, requestedPlayer);
requestedPlayer.removeCard(i);
}
P.findBooks();
return P;
}else{
//place draw in paremters
System.out.println("Go Fish");
P.addCard(d.draw());
if((P.cardsInHand[P.getnumCardsInHand()].getRank()) == rank){
return P;
}else{
System.out.println("Requested Players turn");
return (requestedPlayer);
}
}
}
return requestedPlayer;
}