所以我一直在試圖弄清楚這一點,但無濟於事。我必須將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解析投擲方法。 –