Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert an integer to an array of digits

Tags:

java

integer

I try to convert an integer to an array. For example, 1234 to int[] arr = {1,2,3,4};.

I've written a function:

public static void convertInt2Array(int guess)  {     String temp = Integer.toString(guess);     String temp2;     int temp3;     int [] newGuess = new int[temp.length()];     for(int i=0; i<=temp.length(); i++) {         if (i!=temp.length()) {             temp2 = temp.substring(i, i+1);         } else {             temp2 = temp.substring(i);             //System.out.println(i);         }         temp3 =  Integer.parseInt(temp2);         newGuess[i] = temp3;     }      for(int i=0; i<=newGuess.length; i++) {         System.out.println(newGuess[i]);     } } 

But an exception is thrown:

Exception in thread "main" java.lang.NumberFormatException: For input string: ""
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)

at java.lang.Integer.parseInt(Integer.java:504)
at java.lang.Integer.parseInt(Integer.java:527)
at q4.test.convertInt2Array(test.java:28)
at q4.test.main(test.java:14)
Java Result: 1

How can I fix this?

like image 246
hkguile Avatar asked Nov 07 '11 06:11

hkguile


People also ask

Can integer convert to array?

Get the set of integers. Create an object of Primitive int by ArrayUtils. toPrimitive() method of Apache Commons Lang's library. Convert this primitive int to array of integer by use of toArray() method.


1 Answers

The immediate problem is due to you using <= temp.length() instead of < temp.length(). However, you can achieve this a lot more simply. Even if you use the string approach, you can use:

String temp = Integer.toString(guess); int[] newGuess = new int[temp.length()]; for (int i = 0; i < temp.length(); i++) {     newGuess[i] = temp.charAt(i) - '0'; } 

You need to make the same change to use < newGuess.length() when printing out the content too - otherwise for an array of length 4 (which has valid indexes 0, 1, 2, 3) you'll try to use newGuess[4]. The vast majority of for loops I write use < in the condition, rather than <=.

like image 103
Jon Skeet Avatar answered Sep 19 '22 10:09

Jon Skeet