Member Avatar for danielagaba

hi

I came up with this code to help me convert a string into an integer array but i keep getting a null exception when i run it and i am not sure how to fix it.

import java.io.*; import java.lang.reflect.Array; public class test { static String message; static int[] arr; static int j; static String[] arr2; public static void main(String[] args) { message = "123456"; arr2 = new String [] {message}; j = message.length(); for (int i=0; i<=arr2.length; i++){ arr[i] = Integer.parseInt(arr2[i]); } System.out.println(arr[1]); System.out.println(arr[2]); } }

Thanks

Member Avatar for thines01

Use i < j in your for loop.

Member Avatar for danielagaba

Use i < j in your for loop.

thanks for the post still getting the same error though

Member Avatar for JamesCherrill

The error message gives the line number where the error happened. Which line is it?

Member Avatar for danielagaba

The error message gives the line number where the error happened. Which line is it?

line 22

Member Avatar for thines01

Good suggestion JamesCherrill.
Also danielagaba, what "size" or "length" is the array built on line 17 when it is created?

Member Avatar for JamesCherrill

That would be length 1
danielagaba: Can you please post the complete error message - this looks funny to me. I would expect an array bounds exception, not a null exception

Member Avatar for danielagaba

That would be length 1
danielagaba: Can you please post the complete error message - this looks funny to me. I would expect an array bounds exception, not a null exception

Exception in thread "main" java.lang.NullPointerException
at test.main(test.java:21)

Member Avatar for danielagaba

Good suggestion JamesCherrill.
Also danielagaba, what "size" or "length" is the array built on line 17 when it is created?

the size is 6

Member Avatar for thines01

Really? arr2.length is six (6) ?
What would happen if you found out it was one (1)?

Member Avatar for danielagaba

i tested individual elements of the code and found that the problem comes from

arr2 = new String [] {message};

when i try to print arr2[1], arr2[2], etc. it brings an indexoutofbounds exception.

Member Avatar for danielagaba

Really? arr2.length is six (6) ?
What would happen if you found out it was one (1)?

yeah. turned out it was, changed it to j = message.length(); (which is 6) but still get the same problem

Member Avatar for JamesCherrill

Please check again.
arr2 is an array of 1 element. length 1.
That one element arr2[0] contains a String of length 6.
The length of the array is not the same thing as the length of a single String arrayelement.

Member Avatar for danielagaba

Please check again.
arr2 is an array of 1 element. length 1.
That one element arr2[0] contains a String of length 6.
The length of the array is not the same thing as the length of a single String arrayelement.

i figured the issue is with

arr2 = new String [] {message};

then the conversion to an integer array

Member Avatar for thines01

I would suggest converting the original string directly into an integer array ( >>>of appropriate size <<<) with something like this:

// convert each character in message to an int (using String to int converter) for(int i=0; i< intLen; i++) { int_arr[i] = Integer.parseInt(Character.toString(message.charAt(i))); }
Member Avatar for JamesCherrill

yes, or more simply...

int_arr[i] = message.charAt(i) - '0';
Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.