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?
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: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 usenewGuess[4]. The vast majority offorloops I write use<in the condition, rather than<=.