这是我的代码:
String bericht = "";
while (cur.moveToNext()) {
if (cur.getString(cur.getColumnIndex("address")).equals("SAH")) {
bericht += cur.getString(cur.getColumnIndex("body"));
adress = getadress(bericht); //basically cutting a part out
datum = getdatum(bericht); //same
afspraken[x][0] = datum;
afspraken[x][1] = adress;
x++;
}
cur.moveToNext();
bericht = "";
}
最后没有bericht = "";
但是我想在每个循环中重置字符串!
我试过了:
String bericht;
bericht = cur.getString(cur.getColumnIndex("body"));
错误讯息:
E/AndroidRuntime(3171): java.lang.StringIndexOutOfBoundsException: length=0; index=2
答案 0 :(得分:1)
无论如何,您似乎在每次迭代中都重置了字符串。你可以在迭代中声明bericht
,因为你不需要在外面。
while (cur.moveToNext()) {
if (cur.getString(cur.getColumnIndex("address")).equals("SAH")) {
String bericht = cur.getString(cur.getColumnIndex("body"));
adress = getadress(bericht); //basically cutting a part out
datum = getdatum(bericht); //same
afspraken[x][0] = datum;
afspraken[x][1] = adress;
x++;
}
cur.moveToNext();
}
此外,似乎问题的核心在于getadress(bericht);
或getdatum(bericht);
。检查你在那里处理你的字符串。
答案 1 :(得分:1)
这里有点猜测,因为在发布的代码部分中没有出现异常,但这可能会有所帮助:
String bericht = "";
while (cur.moveToNext()) {
if (cur.getString(cur.getColumnIndex("address")).equals("SAH")) {
bericht = cur.getString(cur.getColumnIndex("body"));
if (bericht != null && !bericht.trim().isEmpty()) {
adress = getadress(bericht); //basically cutting a part out
datum = getdatum(bericht); //same
afspraken[x][0] = datum;
afspraken[x][1] = adress;
x++;
}
}
cur.moveToNext();
}
我们改变的是,我们检查我们在bericht中输入的字符串是否是我们可以合理地期望在使用它调用getadress(...)和getdatum(...)时工作的东西。你可能想要检查更多(例如X的最小长度),但由于我无法看到这些方法,我能够真正告诉你那将是什么。