I am building the object with the classical Nim game, and there are some methods dealing with the player data. I bumped into this problem when testing my code, and couldn't figure it out.
This problem appeared when I add a player in an array, removing it after. Then, adding a player again. It showed: Index 1 out of bounds for length 1. What I've tried is to filter the null position when I remove the player data.
Any help is highly appreciated. And thank you all for the patience and time solving it!
The code is a little bit longer, but related.
Here is the related code from class Nimsys, main method.
public static void addPlayer(String [] name) {
    if (name != null && name.length == 3) {
        for (int i = 0; i < NimPlayer.getCounter(); i++) {
            String userCheck = NimPlayer.getPlayer()[i].getUserName();
            if (userCheck.contains(name[0])) {
                System.out.println("The player already exists.\n");// Test if player has been created
                return;
            }
        }
        NimPlayer.createPlayer(name[0], name[1], name[2]);
        System.out.println("The player has been created.");
        return;
    } 
    System.out.println("Not Valid! Please enter again!");   
}
public static void searchAndRemovePlayer(String user) {
    NimPlayer [] playerList = NimPlayer.getPlayer();
    for (int i = 0; i < playerList.length; i++) {
        String userName =playerList[i].getUserName().trim();
        if (userName.equals(user)) {
            playerList[i] = null;
            System.out.println("Remove successfully!");
            NimPlayer.setPlayerList(playerList);
            return;
        }
    }
    System.out.println("The player does not exist.\n");
}
public static void main(String[] args) {
    System.out.println("Welcome to Nim\n");
    //Scanner in = new Scanner(System.in);
    while (true) {
        System.out.print('$');
        String commandin = in.next();
        if (commandin.equals("addplayer")) {
            String inputName = in.nextLine();
            String[] name = splitName(inputName);
            addPlayer(name);
        }
        if (commandin.equals("removeplayer")) {
            String user = in.nextLine().trim();
            if (user.equals("")) {
                System.out.println("Are you sure you want to remove all players? (y/n)");
                commandin = in.next();
                if (commandin.equals("y")) {
                    NimPlayer [] playerList = NimPlayer.getPlayer();
                    for (int i = 0; i < playerList.length; i++) {
                        playerList[i] = null;
                        NimPlayer.setPlayerList(playerList);
                    }
                    System.out.println("Remove all the players\n");
                    Arrays.stream(NimPlayer.getPlayer()).filter(Objects::nonNull).toArray();
                }
            }
            if (!user.equals("")) {
                searchAndRemovePlayer(user);
                Arrays.stream(NimPlayer.getPlayer()).filter(Objects::nonNull).toArray();
            }
        }
Here is part of my NimPlayer class:
public class NimPlayer {
private String userName;
private String familyName;
private String givenName;
private int score;
private int gamePlayed;
private static int counter;
private static final int SIZE = 10;
private static NimPlayer[] playerList = new NimPlayer[SIZE]; // set an array here
//define NimPlayer data type
public NimPlayer(String userName, String surName, String givenName) {
    this.userName = userName;
    this.familyName = surName;
    this.givenName = givenName;
}
// create new data using NimPlayer data type
public static void createPlayer(String userName, String familyName, String givenName) {
    if (counter < SIZE) {
        playerList[counter++] = new NimPlayer(userName, familyName, givenName);
    } else {
        System.out.println("Cannot add more players.");
    }
}
public static int getCounter() {
    return counter;
}
public static NimPlayer [] getPlayer() {   
    NimPlayer[] nimPlayers = Arrays.stream(playerList).filter(Objects::nonNull).toArray(NimPlayer[]::new);
    counter = nimPlayers.length;  //update the counter
    return nimPlayers;
}
public static void setPlayerList(NimPlayer [] newplayerList) {
    NimPlayer.playerList = newplayerList;
 
     
     
    