Java-итератор, генерирующий исключение awt-eventqueue - PullRequest
0 голосов
/ 23 марта 2019

Я пишу программу, которая добавляет элементы в список и использует итератор для печати всех элементов в JTextArea.Я немного сбит с толку, потому что думал, что это потому, что если следующего нет, я пытаюсь напечатать пустое выражение, но разве условие цикла while проверяет, есть ли следующий объект в итераторе?

Я знаю, что проблема только в println, так как, если я удаляю ее, программа работает нормально.Однако есть ли способ получить доступ к следующему объекту в итераторе в виде строки?

while (iter.hasNext())
  {
     System.out.println(iter.next().toString());
     i++;
     r = i + " x " + formatter.formatLineItem(iter.next());
  }

Вот трассировка стека:

 Exception in thread "AWT-EventQueue-0" 
 java.lang.IndexOutOfBoundsException: Index 2 out-of-bounds for length 2
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
at java.base/java.util.Objects.checkIndex(Objects.java:372)
at java.base/java.util.ArrayList.get(ArrayList.java:440)
at Invoice$1.next(Invoice.java:56)
at Invoice$1.next(Invoice.java:48)
at Invoice.format(Invoice.java:80)

Выдает исключение «AWT-Eventqueue-0».В настоящее время я использую println, чтобы увидеть, какие именно элементы находятся в итераторе, потому что я хочу классифицировать каждый элемент по имени.Однако я хочу получить доступ к строке элемента, которая находится в итераторе.

...