как добавить объект в нулевой массив с проверкой существующего массива - PullRequest
0 голосов
/ 21 апреля 2020

Я java новичок, и я пытался добавить игрока в массив. Я думал, что успешно справился с проблемой, но это не так. Я сделал следующее:

  1. У меня есть разделенный текст для отправки игрока.
  2. Я создал конструктор в NimPlayer.
  3. Я установил массив в Nimsys для сохранения созданных данных игрока.

И у меня есть два вопроса:

  1. Наверняка сначала массив будет нулевым. Если я использую единственный массив здесь, возможно ли добавить сюда проигрыватель?
  2. Я установил counter для записи созданного проигрывателя, но я не могу сделать это в операторе else.

Вот мой код:

int static counter;
public static String[] splitName(String inName) {
String[] splittedLine = inName.split(",");
String[] name = null;
if (splittedLine.length==3) {
    String userName = splittedLine[0].trim();
    String familyName = splittedLine[1].trim();
    String givenName = splittedLine[2].trim();
    name = new String[3];
    name[0] = userName;
    name[1] = familyName;
    name[2] = givenName;
}
return name; }

public static void main(String[] args) {

NimPlayer[] playerList = new NimPlayer[10]; // set an array here

Scanner in = new Scanner(System.in);
while (true) {
    System.out.print('$');
    String commandin = in.next();

    if (commandin.equals("addplayer")) { 
        String inName = in.nextLine();
        String[] name = splitName(inName);

        //Make sure the vadality of in name
        //Can use playerCheck to simplify the code
        if (name != null && name.length==3 && counter < 10) {
            if (playerList != null) {
                for (int i = 0; i < playerList.length; i++) {
                    String userCheck = playerList[i].getUserName();
                    if (userCheck.contains(name[0])) {
                        System.out.println("The player already exist.");
                    } else {
                        System.out.println("The player has been created.");
                        playerList[counter++] = new NimPlayer(name[0],name[1],name[2], 0, 0);
                    }
                }
            } else {
                // I have to add the player here
            }

        } else {
            System.out.println("Invalid input! e.g. addplayer george,Washington,George");
        }


    }

А мой NimPlayer:

public class NimPlayer {
private String userName;
private String familyName;
private String givenName;
private int score;
private int gamePlayed;



public NimPlayer(String userName, String familyName, String givenName, int gamePlayed, int score) {
    this.userName = userName;
    this.familyName = familyName;
    this.givenName = givenName;
    this.gamePlayed = gamePlayed;
    this.score = score;
}

public void setUserName(String userName) {
    this.userName = userName;
}
public void setFamilyName(String familyName) {
    this.familyName = familyName;
}
public void setGivenName(String givenName) {
    this.givenName = givenName;
}    
public String getUserName() {
    return userName;
}
public String getfamilyName() {
    return familyName;
}
public String getGivenName() {
    return givenName;
}
public int setScore(int score) {
    return score;
}
public int getScore() {
    return score;
}
public int setGamePlayed (int gamePlayed) {
    return gamePlayed;
}
public int getGamePlayed() {
    return gamePlayed;
}

}

1 Ответ

0 голосов
/ 21 апреля 2020
  1. Да, вы можете изменять элементы массива так же, как вы sh. Так что «добавление» игроков (установка значения элемента массива в границах массива) - это нормально.
  2. Остальное («// Я должен добавить игрока здесь») никогда не будет достигнуто, поскольку playerList никогда не равно нулю.

Поскольку все элементы в playerList инициализируются чтобы обнулить, вы должны проверить, является ли playerList[i] нулевым, перед вызовом getUserName() (чтобы избежать исключения NullpointerException).

...