gpt4 book ai didi

java - Android arraylist 因迭代而崩溃

转载 作者:行者123 更新时间:2023-12-01 10:34:37 24 4
gpt4 key购买 nike

我一直在尝试制作一个多人游戏、回合制应用程序,到目前为止一切进展顺利:我的应用程序可以与本地服务器通信,并从中检索信息。现在,当我尝试将收到的信息放入数组列表中时,我没有收到错误,但数组列表保持为空,这导致我的应用程序在调用 myArrayList.get(i) 时崩溃。这是设置数组的代码:
我相信问题出在设置下面的数组

//The "i" below is the iterator used for the index
for (int i = 1; i < getSharedPreferences("INFO", MODE_PRIVATE).getInt("numberOfGames", 0) + 1; i++) {
try {
SharedPreferences s = getSharedPreferences("INFO", MODE_PRIVATE);
SharedPreferences.Editor e = s.edit();
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("gameid", s.getString("gameID" + i, null)));
Log.d("request!", "starting");
JSONObject json = jsonParser.makeHttpRequest(
REFRESH_URL, "POST", params);
success = json.getInt("success");
Log.i("LOGI", "Success: " + success);
if (success == 1) {
Log.i("LOGI", "**********GAME #" + s.getString("gameID" + i, null) + "**********");
Log.i("LOGI", "PLAYER1: " + json.getString("player1"));
Log.i("LOGI", "PLAYER2: " + json.getString("player2"));
Log.i("LOGI", "Score1: " + json.getString("score1"));
Log.i("LOGI", "Score2: " + json.getString("score2"));
Log.i("LOGI", "Turn: " + json.getString("turn"));
Log.i("LOGI", "Game Chosen: " + json.getString("gameChosen"));

//EVERYING BELOW IS THE PROBLEM
player1.add(i, json.getString("player1"));
player2.add(i, json.getString("player2"));
score1.add(i, Integer.parseInt(json.getString("score1")));
score2.add(i, Integer.parseInt(json.getString("score2")));
turn.add(i, Integer.parseInt(json.getString("turn")));
gameChosen.add(i, Integer.parseInt(json.getString("gameChosen")));
}

这是获取数组的代码

private void drawCurrentGames(Canvas canvas){
String player1;
String player2;
String opponent;
int score1;
int score2;
Log.i("LOGI", "WOERKIGN");
for(int i=0; i<Main.games; i++){
//The app crashes here
player1 = Main.player1.get(i);
player2 = Main.player2.get(i);
score1 = Main.score1.get(i);
score2 = Main.score2.get(i);
}
}

当不使用迭代器来设置或获取数组列表时,一切都很好,但是当它是应用程序崩溃时

最佳答案

向数组添加项目的迭代器从 1 开始。当您调用数组列表的 add(int, Object) 方法时,要添加的对象将添加到第一个参数的索引处。

因此,要添加的第一个项目将添加到索引 1 处。当您从该数组列表中读取时,您将从 0 开始。索引 0 处没有任何内容,这就是您的应用程序崩溃的原因。

关于java - Android arraylist 因迭代而崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34846321/

24 4 0