所以我一直在试图弄清楚这一点,但无济于事。我必须将JTextField转换为int数组,同时有两个异常,NumberFormatException和ArrayIndexOutOfBoundsException。我能找到一种方法来转换它,但是当我输入字母时,它不会抛出NumberFormatException。将JTextField转换为一个int数组,例外
try {
int j=0;
String str = "" + numbersField.getText();
char digit[] = str.toCharArray();
for (int i=0; i<digit.length; i++) {
if (Character.isDigit(digit[i])) {
array[j]=Character.getNumericValue(digit[i]);
System.out.print(array[j] + " "); //Checking if it works
++j;
}
}
} catch (NumberFormatException e1) {
System.err.println("NumberFormatException: Array can only hold integers");
} catch (ArrayIndexOutOfBoundsException e1) {
System.err.println("ArrayIndexOutOfBoundsException: Array can only hold up to 10 elements");
}
个人而言,我相信它不会抛出NumberFormatException,因为它将JTextField转换为char,但我可能完全错误。任何帮助表示赞赏。
编辑:我只包含程序的一部分,因为它在我看来有点冗长。数组在此之前被初始化。该部分程序的最终目标是让用户输入10个数字的限制,同时在输入字母或超过10个数字时抛出异常。这是我第一次使用异常,所以我还是比较新,所以请原谅我所做的任何错误。
你在哪里初始化数组'[]'? – alaster
你想读多少位数?也许最好是将所有文本都看作一个大数字,然后转换为数字数组?我认为你永远不会有'NumberFormatException',因为你检查每个字符是否是数字 – alaster
当然,它不会抛出NFE - 如果块会阻止它分析非数字字符,并且永远不会用NumberFormatException解析投掷方法。 –