2015-04-15 2 views
-3

По какой-то причине мой метод sortByDuration не позволит мне вызвать метод remove для распечатки элементов в моей куче во время их удаления. Цель этого - просто отсортировать кучу; это действительно не имеет значения, что я его удаляю.Я пытаюсь сортировать массив через heapSort и его не работает

public static Song[] sortByDuration(Song[] songs)//sorts the heap 
{ 
    for(int i=size;i>0;i--) 
     System.out.print(songs.remove()+" "); 
    return songs; 
} 

и это мой способ удалить

public Song remove()//removes 
{ 
    Song retVal = peek(); 

    heap[0] = heap[size-1]; 
    heap[size-1] = null; 
    size--; 

    bubbleDown(); 

    return retVal; 
} 

ошибка в операторе печати моего метода удалить Спасибо ребята

+1

Ошибка будет хорошим дополнением на ваш вопрос –

+1

Распечатайте значение размера перед запуском этого цикла. Вероятно, 0 –

+0

его ошибка компиляции, не может вызывать remove() на типе типа массива – cvirus96

ответ

0

Вы пытаетесь вызвать метод remove() на массив объекты. Такие массивы на Java не имеют такого метода.

Чтобы ваш код работал правильно, вам нужно будет изменить способ удаления объектов из массива songs. Возможно, вы хотите взглянуть на вопрос «Removing an element from an Array (Java)» здесь, в SO.

Вы можете также пропустили индексировать элементы (для доступа только i -м элементом, а не весь массив), и заявление, что вы хотели написать было

 System.out.print(songs[i].remove()+" "); 
Смежные вопросы