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;
    }
 
    