Я работаю над заданием об упорядоченном списке на java. Нам не разрешено использовать сортировку, поэтому я принял решение, но 2 числа выводятся дважды

#java #oop #inheritance

Вопрос:

вот код для MyArrayList

 public void addLast(int number){
    if(!isFull())
        doubleTheArray();
        element[count  ] = number;
}
 

и вот код для MyOrderedList

 public void add(int item){
    for(int i = 0; i < count; i  ){

        for(int j = i 1; j < count; j  ){

            if(element[i] > element[j]){
                item = element[i];
                element[i] = element[j];
                element[j] = item; 
            }
        }
    }

    addLast(item);            
}
 

Это основной метод

 public static void main(String [] args){
    MyOrderedList oList = new MyOrderedList();

    oList.add(3);
    oList.add(5);
    oList.add(2);
    oList.add(4);
    oList.add(7);
    oList.add(8);
    oList.add(10);
    System.out.println("Ordered list of items: "  oList);
}
 

Кто-нибудь может помочь мне выяснить, в чем дело? Нам не разрешено использовать сортировку, поэтому я принял решение, но 2 числа выводятся дважды в основном методе для MyOrderedList. Мы должны добавить элементы в нужном месте. Или в порядке возрастания для добавления(элемента). isFull () — это логический метод, который удваивает (doubleTheArray()) размер массива, если это правда.

Комментарии:

1. add может перезаписываться item при замене элементов.

2. Я бы предложил отладку, чтобы узнать, в чем ваша проблема, но, как говорит @ScottHunter, элемент сразу же переопределяется

3. Кроме того, при добавлении элемента в OrderedList не следует ли вам сохранять его отсортированным и использовать двоичный поиск для определения позиции, в которую нужно вставить новый item ? В текущей реализации вы всегда повторно сортируете список при добавлении элемента.

4. addLast имеет смысл только в том случае, если вы добавляете значение не меньше, чем все в настоящее время в списке.

5. Обратите внимание, что add это ничего не изменит, если список правильно отсортирован, и добавит новое значение в конец, независимо от того, куда оно должно идти. Как говорит @Байрон, отладка посеяла бы вам это.