我正在尝试验证我的jtextfeild以仅输入货币值。其中仅包括数字和句号。前17652.50
所以我尝试了这种方法。但是在执行时我得到了这个java.lang.ArrayIndexOutOfBoundsException:1
这是方法。
private void jTextField1KeyTyped(java.awt.event.KeyEvent evt) {
try {
char c = evt.getKeyChar();
String mny[] = jTextField1.getText().split("\\.");
if (!((c >= '0') && (c <= '9') || (c == KeyEvent.VK_BACK_SPACE) || (c == KeyEvent.VK_DELETE) || (c == KeyEvent.VK_ENTER) || (c == KeyEvent.VK_TAB) || (c == KeyEvent.VK_NUM_LOCK) || (c == '.'))) {
getToolkit().beep();
evt.consume();
}
if (mny[1].length() == 2) {
getToolkit().beep();
evt.consume();
}
} catch (Exception e) {
e.printStackTrace();
}
}
在textfeild中键入第一个数字后,出现数组索引超出界限异常的情况。据我了解,这是因为mny [o]应该在我进入句号之后发生。但是我找不到解决方案。请帮我。
谢谢。
最佳答案
也就是说,输入中没有点String mny[] = jTextField1.getText().split("\\.");
将返回仅包含一项的数组。 Java中的数组从零开始。因此mny[1].length()
将抛出ArrayIndexOutOfBoundsException
。
您应在此处检查数组的大小是否为2
if (mny.length > 1 && mny[1].length() == 2) {