java - nullpointer异常

时间:2009-11-24 15:48:36

标签: java

伙计们,我需要一些帮助,我在下面的代码片段中收到此错误。 这是堆栈跟踪。我有一种感觉,有人说我不会付出太多努力。它确定我同意,给我一个建议,我应该做些什么,生病了,只是因为我有点卡住而没有前进所以想到在这里发帖。

我认为我遇到了问题,因为当使用要写入excel的内容大小时,我正在使用用于编写excel文件的代码。我真正需要的是当行和列的长度可能变化时写入excel的某种方式。

Length of Array:2000
java.lang.NullPointerException
    at org.temp2.cod2.WriteToExcel.setExcel(WriteToExcel.java:149) >> line 149 is last line of the code snippet below i.e. byte buf[] = s.getBytes();

此处为代码段

String data[][] = new String [2000][5];

System.out.println("Length of Array:"+data.length);

for(int j=0;j<colN.length;j++){
    Label myLabel1=new Label(j,1,colVal[j]);
    wst.addCell(myLabel1);
}

for(int i=2;i<=data.length+1;i++){
    for(int j=0;j<colN.length;j++)
    {
            // Encrypt
            encrypter.encrypt(new FileInputStream("C:\\Users\\abc\\Desktop\\Encrypted.txt"),new FileOutputStream("temp.txt"));
            // Decrypt

            ByteArrayOutputStream f = new ByteArrayOutputStream();
            String s = data[i-2][j];
            byte buf[] = s.getBytes();

6 个答案:

答案 0 :(得分:4)

您对ss.getBytes的引用可能为空。这意味着要执行的是

byte buf[] = null.getBytes();

这没有多大意义。所以你要做的就是纠正这个可能是这样的

String s = data[i-2][j];
byte buf[];
if (s != null) 
    buf = s.getBytes();
else
   buf = //What do you want the default behavior to be? maybe "".getBytes()?

答案 1 :(得分:2)

显然data[i-2][j]为空。你没有把它设置在任何地方,所以它是空的。

答案 2 :(得分:1)

data[i-2][j]看起来像null。它应该是非null吗?检查您如何初始化它,因为,目前,您只是声明data[][]String[2000][5]数组,您没有初始化其内容。所以它充满了空白。

答案 3 :(得分:1)

你在什么时候初始化data [] []数组?

String data[][] = new String [2000][5];

分配空间,但似乎你从未在数组中放入任何字符串。

另外我觉得我应该指出string.getBytes()不是字符编码安全的。您应该始终指定字符编码,例如UTF-8或UTF-16。请记住,字符串中的字符不等于字节; getBytes()转换数据。

答案 4 :(得分:0)

您永远不会初始化数组的内容。您需要遍历数组并为元素分配字符串:

String[][] data = new String[2000][5];

for(int i = 0; i < data.length; i++) {
    for(int j = 0; j < data[i].length; j++) {
        data[i][j] = new String(...);
    }
}

答案 5 :(得分:0)

嘿流浪者,你已经将你的数组数组声明为

String data[][] = new String [2000][5];

您正在访问该位置[2000]。在上面的数组中,您的索引应始终小于2000。