Java 将对象添加到数组的方法是从索引1而不是0添加的
将任务对象(带有字符串和int的简单对象)添加到数组的方法是从索引1而不是0添加的 如何在不从头重写方法的情况下更正此问题 这是教授的方法,程序中还有其他相互依赖的代码。他说我需要解决一个“小”问题。问题似乎是该方法是从索引1而不是0添加的。是否有一个小的,微创修复这个小问题 如果相关的话,我不理解为什么使用pos/=2Java 将对象添加到数组的方法是从索引1而不是0添加的,java,arrays,Java,Arrays,将任务对象(带有字符串和int的简单对象)添加到数组的方法是从索引1而不是0添加的 如何在不从头重写方法的情况下更正此问题 这是教授的方法,程序中还有其他相互依赖的代码。他说我需要解决一个“小”问题。问题似乎是该方法是从索引1而不是0添加的。是否有一个小的,微创修复这个小问题 如果相关的话,我不理解为什么使用pos/=2 public void insert( String job, int priority ) { Task newJob = new Task( job, p
public void insert( String job, int priority )
{
Task newJob = new Task( job, priority );
heap[++heapSize] = newJob;
int pos = heapSize;
while (( pos != 1 ) && ( newJob.priority > heap[pos/2].priority ))
{
heap[pos] = heap[pos/2];
pos /=2;
}
heap[pos] = newJob;
}
我试过:
( pos != 0 )
( pos != 2 )
及删除
( pos != 1 )
这些会导致NullPointerException。此
heap[++heapSize]=newJob代码>应该是heap[heapSize++]=newJob代码>-了解增量前后的差异很重要。或者,将heapSize
的初始值从0
修改为-1
。heap[heapSize++]=newJob;这是解决办法++变量将首先递增变量。这就是为什么它以1开头。谢谢。是的,教授是这么说的。这个符号对我来说是新的,我不理解++I和I++之间的区别。现在我知道了。我将不得不更仔细地研究它,以理解为什么会出现问题,但如果我能理解它是什么,我仍然需要完成作业。