开发者

java - nullpointer exception

Guys i need some help here , im getting this error here at the code snippet below. here's the stack trace. i have a feeling that somebody's gonna say not much effort on my part. its ok i agree , give me a suggestion what should i do more and ill do it just that i've got a little stuck and not moving ahead so thought of posting it here.

i think i'm having a problem because i'm using a code that was used for writing an excel file when the size of content to write to excel was pre - known . what i actually need is some way to write to excel when the length of rows and collumns may vary .

Length of Array:2000
java.lang.NullPointerException
    at org.temp2.cod2.Write开发者_运维知识库ToExcel.setExcel(WriteToExcel.java:149) >> line 149 is last line of the code snippet below i.e. byte buf[] = s.getBytes();

here the code snippet

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();


Your reference to s in s.getBytes is probably null. So that means what is getting executed is something like

byte buf[] = null.getBytes();

Which doesn't make much sense. So what you want to do to correct this might be something like this

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()?


Obviously data[i-2][j] is null. You are not setting it anywhere, so it is null.


At what point do you initialize the data[][] array?

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

allocates the space but it appears that you never put any Strings in the array.

Also I feel I should point out that string.getBytes() is not character-encoding safe. You should always specify the character encoding, such as UTF-8 or UTF-16. Remember, the characters in the string are not equivalent to bytes; getBytes() transforms the data.


Looks like data[i-2][j] is null. Is it supposed to be non null? Check how you are initializing it then because, currently, you're just declaring data[][] to be a String[2000][5] array, you're not initializing its content. So it's filled with nulls.


Hey rover, You have declared your array of array as

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

and you are accessing the location [2000]. In the above array your index should always be less that 2000.


You never initialize the contents of the array. You will need to loop over the array and assign strings to the elements:

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(...);
    }
}
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜