我正在尝试验证我的jtextfeild,以便只输入货币价值。其仅包括数字和句号。ex-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之后。但我找不到解决办法。请帮帮我。非常感谢。
如果输入中没有点,String mny[] = jTextField1.getText().split("\.");
将返回一个只有一个项的数组。java中的数组是基于零的。所以mny[1].length()
将抛出一个ArrayIndexOutOfBoundsException
。
你应该在这里检查你的阵列是否有2 的大小
if (mny.length > 1 && mny[1].length() == 2) {
您可以将条件更改为:
if (mny.length > 1 && mny[1].length() == 2) {
getToolkit().beep();
evt.consume();
}
(或类似的东西,取决于所需的逻辑)