Odd Java String []问题,包含值,但在插入List <String []>时的行为类似于null

ck1*_*221 0 java csv arrays string

我遇到String数组的问题,并尝试将其添加到列表(List).以下是使用和创建问题的代码.

程序在第一次循环运行时失败,我已经使用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);
}
Run Code Online (Sandbox Code Playgroud)

当此代码运行时输出为.

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)
Run Code Online (Sandbox Code Playgroud)

前两行是正确的,分为:temp [0] temp [1] temp [2] VANC BULLET 0.311 VANC BULLET 0.308

问题是(如错误读取):

output.add(temp);
Run Code Online (Sandbox Code Playgroud)

文件内容如下:

NullPointerException - if the specified element is null and this list does not permit null elements
Run Code Online (Sandbox Code Playgroud)

但是从我的输出(第二行)可以看出,数组"temp"不为空,它分别在每个元素中包含"VANC BULLET 0.308".

我很难过.有没有人有想法或看到我看不到的东西?

谢谢

Per*_*ror 6

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

首先初始化它:

List<String[]> output = new ArrayList<String[]>();
Run Code Online (Sandbox Code Playgroud)

  • 该死,这很快!:) (2认同)