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)

前两行是正确的,并且拆分如下: 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

但正如您从我的输出(第二行)中看到的那样,数组“temp”不为空,它分别在每个元素中包含“VANC BULLET 0.308”。

我难住了。有没有人有想法或看到我没看到的东西?

谢谢

4

2 回答 2

6

从我可以看到你从未List<String[]> output = null;在你的代码中初始化。因此,当它调用List.addList 仍然为 null 时,它会抛出NPE

首先初始化它:

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

该列表ouput被定义为空

List<String[]> output = null;

在循环中,您尝试将值添加到output.

初始化输出对象。

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