如何停止这个java.lang.ArrayIndexOutOfBoundsException?

How to stop this java.lang.ArrayIndexOutOfBoundsException?

我正在尝试验证我的 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] 应该在我输入句号后发生。但我找不到解决办法。请帮我。 谢谢。

您可以将条件更改为:

    if (mny.length > 1 && mny[1].length() == 2) {
        getToolkit().beep();
        evt.consume();
    }

(或类似的东西,取决于所需的逻辑)

如果您输入 String mny[] = jTextField1.getText().split("\."); 中没有点,将 return 一个只有一项的数组。 java 中的数组是从零开始的。所以 mny[1].length() 会抛出一个 ArrayIndexOutOfBoundsException.

如果您的数组大小为 2,您应该在此处检查

if (mny.length > 1 && mny[1].length() == 2) {