我尝试验证我的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]应该在我进入fullstop之后发生。但我无法找到解决方案。请帮我。 谢谢。
答案 0 :(得分:2)
您可以将条件更改为:
if (mny.length > 1 && mny[1].length() == 2) {
getToolkit().beep();
evt.consume();
}
(或类似的东西,取决于所需的逻辑)
答案 1 :(得分:2)
我输入String mny[] = jTextField1.getText().split("\\.");
中没有点会返回只有一个项目的数组。 java中的数组是基于零的。因此mny[1].length()
会抛出ArrayIndexOutOfBoundsException
。
如果你的数组大小为2
,你应该在这里查看if (mny.length > 1 && mny[1].length() == 2) {