StringIndesOutOfBoundsException:length = 0; Java中的index = 2错误

时间:2014-03-20 22:30:44

标签: java string

这是我的代码:

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

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的最小长度),但由于我无法看到这些方法,我能够真正告诉你那将是什么。