0
public void fetchcontent() throws IOException
            {
                    this.open();
                    ContentValues values = new ContentValues();
                    String csvFilename = "/mnt/sdcard/content.csv";
                   // ArrayList<String> al=new ArrayList();
                    CSVReader csvReader = new CSVReader(new FileReader(csvFilename));
                    String row[] = null;
                    while((row = csvReader.readNext()) != null) {
                       st1 = row[0];
                       st2= row[1];
                       st3= row[2];
                       st4= row[3];
                       st5= row[4];
                       values.put(DatabaseHandler.Column1,st1);
                       values.put(DatabaseHandler.Column2,st2);
                       values.put(DatabaseHandler.Column3,st3);
                       values.put(DatabaseHandler.Column4,st4);
                       values.put(DatabaseHandler.Column5,st5);
                      database.insert(DatabaseHandler.Table_Name, null, values);
                       }
                    csvReader.close(); 
                MainActivity.tt1.append("\ncontent table created");
            }

これは、私が作成したテーブルに挿入するための私のコードです。Java lang arrayindexoutofbound 例外エラーが発生します。削除するにはどうすればよいですか? logcat がこれを表示するのを手伝ってください

02-21 16:27:54.308: E/AndroidRuntime(12511): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.webdata/com.example.webdata.MainActivity}: java.lang.ArrayIndexOutOfBoundsException: length=3; index=3

あなたの何人かが言ったように、私は st4 と st5 ステートメントを削除しました、そしてそれはしばらくの間うまくいきましたが、今はインデックス 2 で同じエラーが発生しています。私の配列の長さは 2 です。ここが間違っています。何か不足していますか??/

4

3 に答える 3

1
st4= row[3]; 

配列行の長さが 3 であるため、機能していません。

ほとんどの人は 3 番目と 4 番目のフィールドを使用して完全に削除するように言っていますが、デフォルト値を使用する場合は、これにチェックを追加し、対応するデータがない場合はデータベースに空のデータを挿入する必要があります。

このようなもの:

if (row[3] != null) {
    st3 = row[3];
} else {
    st3 = "";
}
于 2013-02-21T11:06:41.267 に答える
0

これは、CSV ファイル: /mnt/sdcard/content.csv、または CSV ファイルの少なくとも 1 つの行に 3 つの列しかないことを示しています。

参照:java.lang.ArrayIndexOutOfBoundsException: length=3; index=3は、配列内の 3 つのアイテムのみを意味し、インデックス 3 のアイテムにアクセスしようとしています (最大は 2)

なしで試してください:

st4= row[3];
st5= row[4];

values.put(DatabaseHandler.Column4,st4);
values.put(DatabaseHandler.Column5,st5);
于 2013-02-21T11:03:48.303 に答える
0
java.lang.ArrayIndexOutOfBoundsException: length=3; index=3*emphasized text*

例外は、配列に 3 つの要素が含まれていることを示していますが、5 つの要素にアクセスしようとしています。

于 2013-02-21T11:05:01.837 に答える