如何停止此java.lang.ArrayIndexOutOfBoundsException



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

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

相关内容

  • 没有找到相关文章

最新更新