resetting temp to empty string after you parse it to create place for new digits. that at the end of your string will be no space, so if (numbers.charAt(i) == ' ') { ary[j] = Integer.parseInt(temp); j++; } will not be invoked, which means you need invoke ary[j] = Integer.parseInt(temp);

Read more of this post