Вывести числа на нечетных позициях

310
19 июля 2017, 22:28
public SortedLinkedList getOdd()
 {
     SortedLinkedList res = new SortedLinkedList(this.type);
     ListIterator<Integer> iter = this.list.listIterator();
     Integer i = 0;
     while (iter.hasNext()) {
         Integer k = iter.next();
         for (i = 0; i <= k; i++) {
             if (i % 2 == 0) {
                 res.add(k);
             }
         }
     }
     return res;
     }

Не могу разобраться с итераторами, здесь он выводит просто подряд числа, как сделать так, чтобы выводились числа, которые стоят на нечетной позиции ? Для полноты понимания, лучше будет наверное скинуть целый код:

public class SortedLinkedList
    {
     LinkedList <Integer> list;
     boolean type;
     public SortedLinkedList (boolean _type)
     {
         list = new LinkedList<Integer>();
         type = _type;
     }
     public void add (int data)
     {
         ListIterator<Integer> iter = list.listIterator();
         while (iter.hasNext())
         {
             if (iter.next() == data )
             {
                 if (this.type == true)
                 {
                     iter.previous();
                     iter.add(data);
                     return;
                 }
                 else
                     return;
             }
             iter.previous();
             if (iter.next() > data)
             {
                 iter.previous();
                 iter.add(data);
                 return;
             }
         }
         iter.add(data);
     }
     public void remove (int data)
     {
         ListIterator<Integer> iter = list.listIterator();
         while (iter.hasNext())
         {
             if (iter.next() == data)
             {
                 iter.remove();
             }
         }
     }
     public boolean equals (Object _list)
     {
         if (! (_list instanceof SortedLinkedList) )
         {
             return false;
         }
         if (_list == this)
         {
             return true;
         }
         ListIterator<Integer> iter = this.list.listIterator();
         ListIterator<Integer> iter2 = ((SortedLinkedList) _list).list.listIterator();
         while ( iter.hasNext() && iter2.hasNext() )
         {
             if (iter.next() != iter2.next())
             {
                 return false;
             }
         }
         return true;
     }
     public SortedLinkedList getOdd()
     {
         SortedLinkedList res = new SortedLinkedList(this.type);
         ListIterator<Integer> iter = this.list.listIterator();
         Integer i = 0;
         while (iter.hasNext()) {
             Integer k = iter.next();
             for (i = 0; i <= k; i++) {
                 if (i % 2 == 0) {
                     res.add(k);
                 }
             }
         }
         return res;
         }

    public String toString()
    {
        return list.toString();
    }
}
Answer 1
  1. В данной ситуации проще не использовать итератор;
  2. Вам нужны нечетные позиции, а проверяете Вы i % 2 == 0.
  3. Не используйте объектные оболочки, если можно обойтись примитивами.

Можно явно:

for (int i=0; i<list.size(); i++) {
    if (i % 2 != 0) {
        res.add(list.get(i));
    }
}

Или так:

for (int i=1; i<list.size(); i=i+2) {
    res.add(list.get(i));
}

С помощью итератора:

int i = 0;
while (iter.hasNext()) {
    int value = iter.next();
    if (i % 2 != 0) {
        res.add(value);
    }
    i++;
}
READ ALSO
Работа с файлом на удаленке

Работа с файлом на удаленке

Selenium + TestNG + Winium(Java)

251
Ошибка при попытке Run или Debug в Android Studio

Ошибка при попытке Run или Debug в Android Studio

Здраствуйте, у меня никак не может исчезнуть одна ошибка, никак не могу найти ответ на свой вопросУ меня возникает вот такая ошибка при попытке...

315
Работа с CSV файлом в Java

Работа с CSV файлом в Java

Всем доброго времени суток!

418