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