0

文字列配列に問題があり、それをリスト (リスト) に追加しようとしています。以下は、使用され、問題を作成するコードです。

プログラムはループの最初の実行で失敗し、OpenCSV を使用して CSV からの入力を確認しました。

List<String[]> output = null;
String[] temp;

for(int i = 0; i < 13; i++)
{               
    temp = reader.readNext();                           //read next line into temp
    System.out.println(temp[0]+temp[1]+temp[2]);        //temp output
    temp[2] = String.valueOf((values[i])/100);          //assign new value
    System.out.println(temp[0]+temp[1]+temp[2]);        //temp output
    output.add(temp);
}

このコードを実行すると、出力は次のようになります。

VANCBULLET0.311
VANCBULLET0.308
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
    at Main.updateCSV(Main.java:951)
    at Main.start(Main.java:863)
    at Main.access$23(Main.java:853)
    at Main$23.actionPerformed(Main.java:520)
    at javax.swing.AbstractButton.fireActionPerformed(Unknown Source)
    at javax.swing.AbstractButton$Handler.actionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.fireActionPerformed(Unknown Source)
    at javax.swing.DefaultButtonModel.setPressed(Unknown Source)

最初の 2 行は正しく、次のように分割されています。 temp[0] temp[1] temp[2] VANC BULLET 0.311 VANC BULLET 0.308

問題は(エラーのように)次の場所にあります。

output.add(temp);

ドキュメントには次のように書かれています。

NullPointerException - if the specified element is null and this list does not permit null elements

しかし、私の出力 (2 行目) からわかるように、配列 "temp" は null ではなく、各要素にそれぞれ "VANC BULLET 0.308" が含まれています。

私は困惑しています。誰かがアイデアを持っているか、私が見損なった何かを見ていますか?

ありがとう

4

2 に答える 2

6

私が見ることができるものからList<String[]> output = null;、コードで初期化されたことはありません。List.addしたがって、 List がまだ null であるときに呼び出すと、 NPEがスローされます

最初に初期化します。

List<String[]> output = new ArrayList<String[]>();
于 2012-12-12T21:10:19.467 に答える
1

リストouputは null として定義されています

List<String[]> output = null;

そして、ループ内で に値を追加しようとしていますoutput

出力オブジェクトを初期化します。

List<String[]> output = new ArrayList<String[]>();
于 2012-12-12T21:12:54.207 に答える