Как остановить это исключение java.lang.ArrayIndexOutOfBoundsException?

1

Я пытаюсь проверить мой 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();
    }
} 

Я получаю параметр Array Index Out of Bounds Exception после ввода первого числа в textfeild. Насколько я понимаю, это происходит потому, что mny [o] должен произойти после того, как я вхожу в полный оборот. Но я не могу найти решение. Пожалуйста, помогите мне. Спасибо.

Теги:
event-handling
jtextfield

2 ответа

2
Лучший ответ

Нет, в вас нет точки ввода. String mny[] = jTextField1.getText().split("\\."); будет возвращать массив только с одним элементом. Массивы в java основаны на нуле. Таким образом, mny[1].length() будет генерировать mny[1].length() ArrayIndexOutOfBoundsException.

Вы должны проверить здесь, если ваш массив имеет размер 2

if (mny.length > 1 && mny[1].length() == 2) {
  • 0
    Я сделал это .. И это работает, большое спасибо за вашу помощь ..
2

Вы можете изменить свое состояние на:

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

(или что-то подобное, в зависимости от требуемой логики)

  • 0
    да работает .. Большое вам спасибо .. Я пытался (mny [0] .length> 1 && mny [1] .length () == 2), но никогда не думал об этом ..: D: D спасибо ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню