8

さて、それは私が持っているものです:

        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 は次の警告を表示します。

Null ポインター アクセス: 変数データは、この場所でのみ null にすることができます

しかし、何が悪いのかわかりません。誰でも助けることができますか?ありがとう。

4

3 に答える 3

7

動的リストが必要なように見えるので、ListString[] data = null;を使用するには置換が必要です

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++;
    }
}
于 2012-04-22T13:52:05.243 に答える
5

配列データをnullに初期化しています。アクセスしようとすると、nullポインターアクセスエラーが発生します。

アクセスしようとする前に、適切な型に初期化する必要があります。つまり、null ではなく String[] に初期化します。

于 2012-04-22T13:54:33.483 に答える
2

「データ」変数を初期化する必要があります。この時点でヌルです。

以下をお試しください

String[] datas2 = datasx.split("(s2)");
data = new String[datas2.length];
于 2012-04-22T13:52:14.340 に答える