Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将对象添加到数组的方法是从索引1而不是0添加的_Java_Arrays - Fatal编程技术网

Java 将对象添加到数组的方法是从索引1而不是0添加的

Java 将对象添加到数组的方法是从索引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

将任务对象(带有字符串和int的简单对象)添加到数组的方法是从索引1而不是0添加的

如何在不从头重写方法的情况下更正此问题

这是教授的方法,程序中还有其他相互依赖的代码。他说我需要解决一个“小”问题。问题似乎是该方法是从索引1而不是0添加的。是否有一个小的,微创修复这个小问题

如果相关的话,我不理解为什么使用pos/=2

  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++之间的区别。现在我知道了。我将不得不更仔细地研究它,以理解为什么会出现问题,但如果我能理解它是什么,我仍然需要完成作业。