出于某种原因,我的sortByDuration方法不允许我调用我的remove方法来打印我们的堆中的项目,因为它们被删除。这样做的目的只是为了对堆进行排序;我删除它并不重要。
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;
}
错误发生在我的remove方法的print语句中 谢谢你们
答案 0 :(得分:0)
您正尝试在对象数组上调用方法remove()
。 Java中的数组没有这样的方法。
要使代码正常工作,您需要更改从songs
数组中删除对象的方式。也许您想在SO中查看“Removing an element from an Array (Java)”问题。
您可能也错过了索引元素(仅访问i
- 元素而不是整个数组),并且您要编写的语句是
System.out.print(songs[i].remove()+" ");