Конечная проблема с оператором while
. Ваш код не просто захватит первые два элемента из Итератора. Скорее, если в Итераторе есть четное количество элементов, он захватит последние два. Если число элементов нечетное, то вы получите одинаковое значение для x и y . Конкретно последний элемент.
Более существенно, проблема с вашим кодом - u
, v
, x
и y
объявлены вне вашего метода. Я предполагаю, что вы делаете это, потому что вы не знаете, как вернуть более одного значения. Если вам нужно вернуть несколько значений, вернуть массив элементов или вернуть пользовательский класс контейнера.
Вот пример того, как вы можете вернуть в массиве два элемента, взятые из данного Итератора:
public static Value[] nextTwo(Iterator<Value> values) {
return new Value[] {
(values.hasNext()?values.next():null),
(values.hasNext()?values.next():null)
};
}
Обратите внимание, что вторым элементом возвращаемого массива будет null
, если в итераторе осталось только одно значение. Оба элемента массива будут null
, если Итератор пуст.