为什么我不能取这个字符串的子串?

时间:2015-07-16 14:35:17

标签: java android string nullpointerexception

从这个功能代码

String line = "";
    int i = 0;
    while (line != null) {
        line = br.readLine();
        checklistList.add(fillList("list", line));
        i++;
    }

该行看起来像清单(日期).txt,我希望它只是日期。对我来说显而易见的解决方案是

String line = "";
    int i = 0;
    while (line != null) {
        line = br.readLine();
        checklistList.add(fillList("list", line.substring(13, 29)));
        i++;
    }

然而,这会导致错误:

Attempt to invoke virtual method 'java.lang.String java.lang.String.substring(int, int)' on a null object reference

可以采取哪些措施来解决这个问题?如果它有所作为,在Android上运行。

2 个答案:

答案 0 :(得分:2)

在尝试将其子串化之前,您必须检查行是否为空。

String line = "";
int i = 0;
while (line != null) {
    line = br.readLine();    
    if (line != null) {    // CHeck if line is null or not
        checklistList.add(fillList("list", line.substring(13, 29)));
    }
    i++;
}

注意:我不知道您的代码的任何其他详细信息,但也许您还必须检查该行是否足够长,以便在您指定的位置对其进行子串。

答案 1 :(得分:1)

正如@David所说,你需要检查行是否不是null

这是一种标准方法

String line = "";
int i = 0;
while ((line = br.readLine()) != null) { //set line then check for null
    checklistList.add(fillList("list", line.substring(13, 29)));
    i++;
}