我有一个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)
答案 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);