EDIT:クラスProcessの新しいインスタンスをどこに作成するのかをpで追加しました。 EDIT 2:コンパイル時にエラーが追加されました。優先度キューを使用しようとしていて、コンパレータを理解していません
プロセススケジューリングをシミュレートし、指定された送信時間前にすべてのプロセスを最初に格納する優先度キューを使用しようとしているクラスのプログラムを記述しています。私はnotSubmitted優先順位キューでプロセスの優先順位で優先順位を付けたいと思います。私はコンパレータを使う必要があると思うが、これまでに優先度のキューをプログラムしたことがないとは分かっていない。これは私が以下でやろうとしていることです。誰でも何が間違っているのか、それを修正するために何が必要なのか、誰でも助けてくれますか?
可能な限り追加したい場合は、以下に示すプロセスクラスはありません。
Processクラスの新しいインスタンスを作成します。
static PriorityQueue<Process> notSubmitted = new PriorityQueue<Process>(25,
new Comparator<Process>(){
public int compare(Object t1, Object t2)
{
int process1Time = ((Process)t1).getsubmissionTime();
int process2Time = ((Process)t2).getsubmissionTime();
if(process1Time > process2Time)
{
return 1;
}
else if(process1Time < process2Time)
{
return -1;
}
else
{
return 0;
}
}
});
Process[] p = new Process[25];
ここにキューを設定します。 (最初は私が定期的にキューを持っていたし、すべてがうまく働いたが、私はプログラムの後半に、それは少し楽にするためにプライオリティキューに変更したい)
for(int j = 0; j < numProcesses; ++j)
{
pid = i.nextInt();
priority = i.nextInt();
submissionTime = i.nextInt();
totalCpuTime = i.nextInt();
computeTime = i.nextInt();
ioTime = i.nextInt();
p[j] = new Process(pid, priority, submissionTime, totalCpuTime, computeTime, ioTime);
}
System.out.printf("%d %d %d\n",c.getcpuNum(), c.getnumProcesses(), c.getqSize());
for(int r = 0; r < numProcesses; ++r)
{
//populate the not submitted queue first
notSubmitted.add(p[r]);
}
コンパイルエラー
javac prog2.java
prog2.java:84: <anonymous prog2$1> is not abstract and does not override abstract method compare(Process,Process) in java.util.Comparator
public int compare(Object t1, Object t2)
^
1 error
なぜあなたのプログラムは機能していないと思いますか?発生しているエラーの説明を追加してください。スタックトレースを使用することをおすすめします。 – Perception
何がうまくいかないのですか?それは間違った順序で出てくるのですか?コンパイルしない? – Thomas
申し訳ありません。私はコンパイラのエラーを追加しています。 – Trance339