我正在尝试验证我的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) {

10-06 09:40