java - 如何通过检查现有数组在空数组中添加对象
问题描述
我是一名 java 初学者,我尝试将播放器添加到数组中。我以为我成功地处理了这个问题,但事实并非如此。我做了以下事情:
- 我有一个拆分文本发送来创建一个播放器。
- 我在 NimPlayer 中创建了一个构造函数。
- 我在 Nimsys 中设置了数组来保存创建的玩家数据。
我有两个问题:
- 可以肯定的是,该数组首先将全部为空。如果我在这里使用唯一的数组,是否可以在这里添加播放器?
- 我已经设置了
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;
}
}
解决方案
- 是的,您可以根据需要更改数组元素。所以“添加”玩家(在数组范围内设置数组元素的值)是可以的。
- else ("// I have to add the player here") 永远不会到达,因为
playerList
它永远不会为空。
由于 playerList 中的所有元素都初始化为 null,因此您应该playerList[i]
在调用之前检查是否为 null
getUserName()
(以避免 NullpointerException)。
推荐阅读
- html - 如何使图像悬停响应上的图像?
- react-native - React Native - 如何重用文件?
- python - 如何在邮件中附加图像文件和嵌入到 html 电子邮件正文的相同图像?
- python - 这是不正确的用法吗?
- javascript - 如何解决:TypeError: grid[i][j] is undefined
- machine-learning - 如何使用我自己的输入来使用 Pytorch 的“带有 seq2seq 的转换”?
- javascript - 访问 dom - 是否有与 Renderer2 相当的阅读器?
- node.js - 为 geofire 的“key_entered”事件创建承诺的问题
- c# - 如何获取 List<> 的特殊 MemberInfo
- javascript - 反应变量不更新