【发布时间】:2017-07-19 09:29:40
【问题描述】:
每当我尝试使用 MainApp 类中的 userNames 列表时,都会收到 IndexOutOfBoundsException。但是,我确信这些名称是从 ServerController 类添加到列表中的,所以我不明白为什么在另一个类中调用时列表为空。
我想这可能是通过检查 SO 上的类似问题来实例化的问题,我已经尝试解决了很长一段时间,但我根本无法这样做。我非常感谢任何建议,TIA。
这是我的用户类,其唯一目的是存储用户数据,即名称和 ID。
public class User {
public User() {
}
public ArrayList<String> userNames = new ArrayList<>();
public ArrayList<String> getUserNames() {
return this.userNames;
}
}
这是我的服务器类:将名称添加到 userNames 列表工作正常。
public class ServerController {
private final Server server;
private final User user;
private final GameConfig gameConfig;
public ServerController(GameConfig gameConfig) {
this.gameConfig = gameConfig;
this.server = new Server();
this.user = new User();
}
public User getUser() {
return user;
}
private class ServerListener extends Listener {
//this is where I add the names to the userNames list
@Override
public void received(Connection connection, Object obj) {
server.sendToAllExceptTCP(connection.getID(), obj);
if (obj instanceof String) {
final String jp = (String) obj;
user.userNames.add(jp);
}
}
这是我的 MainApp:我尝试访问存储在 userNames 中的用户名。每当收到连接正常时,ServerController 都会将名称添加到列表中,但我在 createPlayer 方法中遇到异常。
public class MainApp {
public User user = new User();
public Game createPlayer(){
if (("Mitspieler".equals(client1)) && ("Mitspieler".equals(client2)) && ("Mitspieler".equals(bot1))) {
for (int i = 0; i < clients.length; i++) {
//this is the source of the exception
players[i + 1] = createHumanPlayer(user.getUserNames().get(i), i, restColors[i]);
}
}
//....
}
堆栈跟踪:
Exception in thread "JavaFX Application Thread"
java.lang.IndexOutOfBoundsException: Index: 0, Size: 0
at java.util.ArrayList.rangeCheck(ArrayList.java:653)
at java.util.ArrayList.get(ArrayList.java:429)
at client.MainApp.createPlayer(MainApp.java:265)
【问题讨论】:
-
看起来您的
ServerController和MainApp类中有 2 个不同的User实例 -
在调用
createPlayer之前,您的列表userNames必须填充一些数据 -
ServerController在MainApp中在哪里? -
@Abubakkar 该列表填充在 ServerController 类中。
-
ServerController 在 MainApp 的任何地方都没有被调用。我的想法是从 ServerController 中添加,然后在 MainApp 中调用修改后的列表。
标签: java arraylist indexoutofboundsexception