制作一个新对象,不能应用于type(int)

时间:2017-03-29 06:23:31

标签: java

我有一个ProcessHeap类,它有两个字段:

:表示堆

的Process类型数组

大小:堆中元素的数量

我的构造函数和属性如下所示:

private Process[] heap;
private int size;
private static int counter = 0;

//Paramaterized construct
    public ProcessHeap(Process[] heap, int size) {
        this.heap = heap;
        this.size = size;

问题是,我们获得了一个驱动程序,在驱动程序开始时,我收到了一个错误,特别是(HEAP_SIZE)

这是一行:

final int HEAP_SIZE = 100;
ProcessHeap heap = new ProcessHeap(HEAP_SIZE); // gives this error:

鼠标悬停状态下的错误:

  ProcessHeap中的 ProcessHeap(Process [],int)无法应用于(int)

5 个答案:

答案 0 :(得分:1)

正如其他人所说;你的直接问题是你只想让一个构造函数接受两个参数,然后用一个参数调用它。但除此之外,你的事情过于复杂:

class ProcessHeap {
  private final Process[] heap;

 public ProcessHeap(int size) {
   heap = new Process[size];
 }

就是需要应该使用的所有内容。在两个地方跟踪大小和数组是没有意义的。您始终可以heap.length来获取堆的大小。除此之外:你绝对做希望这个类的用户必须为你的堆提供一个数组 - 因为他们可以稍后去操作该数组。

你的类实现了那个堆;并且你使用数组来做这个是一个实现细节,你应该根本不与外界沟通。

答案 1 :(得分:0)

你的构造函数ProcessHeap正在接受2个参数(一个数组和一个整数),你只传递一个......

所以你需要改变构造函数中的params:

ProcessHeap(Process[] heap, int size)并删除arraay,OR重载它定义一个只取整数的新方法。

答案 2 :(得分:0)

ProcessHeap课程中,您没有一个带int参数的构造函数,因此请按如下所示进行声明:

public class ProcessHeap {

   private int heapSize;

    public ProcessHeap(int heapSize) {
      this.heapSize = heapSize;
    }

    //your other existing code

}

答案 3 :(得分:0)

问题

你有一个构造函数ProcessHeap(Process[] heap, int size)但尝试在这里调用它new ProcessHeap(HEAP_SIZE)只有一个int - 所以编译器停止并警告你参数不匹配

如何解决?

你要么必须改变构造函数/添加一个构造函数,我想你可以这样做,导致你的作业

另一个选择是您传递已经创建的进程数组

final int HEAP_SIZE = 100;

final Process[] processHeap = new Process[HEAP_SIZE];

ProcessHeap heap = new ProcessHeap(processHeap , HEAP_SIZE);

答案 4 :(得分:0)

您还需要定义一个参数constructor,因为您只传递单个Integer值。在实例化ProcessHeap课程时。

    private Process[] heap;
    private int size;
    private static int counter = 0;

    //One Paramaterized construct 
     public ProcessHeap( int size) {
            this.size = size;
     }

    //Two Paramaterized construct
     public ProcessHeap(Process[] heap, int size) {
            this.heap = heap;
            this.size = size;
     }

现在,您可以根据需要拨打Constructor

赞这个

final int HEAP_SIZE = 100;

final Process[] processHeap = new Process[HEAP_SIZE];

ProcessHeap heap = new ProcessHeap(HEAP_SIZE); 
ProcessHeap heap1 = new ProcessHeap(processHeap , HEAP_SIZE);