空指针访问:变量数据在此位置只能为空

时间:2012-04-22 13:48:04

标签: java android eclipse

好的,这就是我所拥有的:

        String[] data = null;
    String[] data2 = null;
    String[] datas = res.split("(s1)");
    int i1 = 0;
    int i2 = 0;
    for(String datasx : datas)
    {
        i1++;
        String[] datas2 = datasx.split("(s2)");

        for(String datas2x : datas2)
        {
            String[] odcinek = datas2x.split("(s3)");
            data[i2] = odcinek[1] + "////" + odcinek[2] + "////" + odcinek[6];
            i2++;
        }
    }

它不起作用。应用程序崩溃在这一行:

data[i2] = odcinek[1] + "////" + odcinek[2] + "////" + odcinek[6];

实际上,Eclipse给了我以下警告:

  

空指针访问:变量数据在此位置只能为空

但我不知道出了什么问题。有人可以帮忙吗?感谢。

3 个答案:

答案 0 :(得分:6)

好像你需要动态列表,所以你需要的是替换String[] data = null;来使用List

List data = new ArrayList<String>();
String[] data2 = null;
String[] datas = res.split("(s1)");
int i1 = 0;
int i2 = 0;
for(String datasx : datas)
{
    i1++;
    String[] datas2 = datasx.split("(s2)");

    for(String datas2x : datas2)
    {
        String[] odcinek = datas2x.split("(s3)");
        data.add(odcinek[1] + "////" + odcinek[2] + "////" + odcinek[6]);
        i2++;
    }
}

答案 1 :(得分:4)

您正在将数组数据初始化为null,当您尝试访问它时,它会为您提供空指针访问错误。

在尝试访问它之前,必须将其初始化为适当的类型,即将其初始化为String []而不是null。

答案 2 :(得分:2)

您需要初始化'data'变量。此时它是空的。

请尝试以下

String[] datas2 = datasx.split("(s2)");
data = new String[datas2.length];