Я пишу программу, которая добавляет элементы в список и использует итератор для печати всех элементов в 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, чтобы увидеть, какие именно элементы находятся в итераторе, потому что я хочу классифицировать каждый элемент по имени.Однако я хочу получить доступ к строке элемента, которая находится в итераторе.