我尝试将整数转换为数组。例如,1234 到 int[] arr = {1,2,3,4};
。
我写了一个函数:
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]);
}
}
但抛出异常:
线程“main”中的异常 java.lang.NumberFormatException:对于输入字符串:“”
在 java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
在 java.lang.Integer.parseInt(Integer.java:504)
在 java.lang.Integer.parseInt(Integer.java:527)
在 q4.test.convertInt2Array(test.java:28)
在 q4.test.main(test.java:14)
Java 结果:1
我怎样才能解决这个问题?
原文由 hkguile 发布,翻译遵循 CC BY-SA 4.0 许可协议
直接的问题是由于您使用
<= temp.length()
而不是< temp.length()
。但是,您可以更简单地实现这一点。即使您使用字符串方法,您也可以使用:您需要进行相同的更改才能在打印内容时使用
< newGuess.length()
- 否则对于长度为 4 的数组(具有有效索引 0、1、2、3),您将尝试使用newGuess[4]
。我写的绝大多数for
循环在条件下使用<
,而不是<=
。