-1

私のドライバークラス内:

for (systemClock = 0; systemClock < 200; systemClock = (systemClock + 1)){
        if(((inputQueue.query()).arrivalTime()) == systemClock)
            System.out.println(((inputQueue.remove()).removalTime()));
    }

Job クラス内:

public int arrivalTime()
{
    return arrivalTime;
}

私の問題は、コードの 2 行目にあります。

if(((inputQueue.query()).arrivalTime()) == systemClock)

クラスでは、キューの FRONT で見つかったオブジェクトを返すQueueObjectメソッドを使用して、基本的な を作成しました。query()各オブジェクトはジョブであり、その中にさまざまな変数とメソッドがあります (この場合に重要なのは、このオブジェクトの「到着時間」だけです)。このコード行でオブジェクトを返し、arrivalTime()メソッドを呼び出して、この特定のオブジェクトからの到着時間を調べようとしています。

編集:「シンボルが見つかりません-メソッドarrivalTime()」というコンパイルエラーが発生します

解決策の編集: 混乱して申し訳ありません/悪い投稿者。謝罪します。これが私が働かなければならない解決策です。キューから引き出されたオブジェクトを Job オブジェクトとしてキャストする必要がありました。

if((((Job)inputQueue.query()).arrivalTime()) == systemClock)
4

1 に答える 1

0

余分な括弧を削除して、(念のため) 不等式を使用してください。

if (inputQueue.query().arrivalTime() >= systemClock) {
    // ...
}

query()メソッドがオブジェクトを返すと仮定していJobます (そうでない場合は、Queue設計に問題があります)。


したがって、問題はシンボルが見つからないことです。

いくつかのヒント:

  1. メソッドarrivalTime()はプライベートとしてマークされていますか? もしそうなら、それは公開されるべきです。
  2. メソッドによって返される型はどれですか? systemClock と同じ型である必要があります。また、== は数値 (int、long、double など) でのみ使用できることに注意してください。タイプが == と比較できない場合は、compareTo() または equals() メソッドを作成する必要があります
于 2013-03-15T22:38:31.780 に答える