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?
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.
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 <=
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With