【发布时间】:2012-06-17 20:07:20
【问题描述】:
所以我一直试图弄清楚这一点,但无济于事。我必须将 JTextField 转换为 int 数组,同时有两个异常 NumberFormatException 和 ArrayIndexOutOfBoundsException。我能够找到一种方法来转换它,但是当我输入字母时它不会抛出 NumberFormatException。
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 个数字时抛出异常。这是我第一次使用异常,所以我对它还比较陌生,所以请原谅我犯的任何错误。
【问题讨论】:
-
你在哪里初始化
array[]? -
你想读多少位数?也许将所有文本作为一个大数字读取然后转换为数字数组会更好?我认为您永远不会拥有
NumberFormatException,因为您会检查每个字符是否都是数字 -
当然它不会抛出 NFE——你的 if 块会阻止它分析非数字字符,而且你永远不会使用 NumberFormatException 抛出方法进行解析。
-
你需要在这里说出你的最终目标。如果您试图阻止用户输入非数字输入,我会使用 DocumentFilter。
-
Hovercraft 建议的
DocumentFilter或 JFormattedTextField。
标签: java arrays eclipse exception jtextfield