0

誰かが友好的で、この頭の体操を面白いと思うかもしれません..しかし、私は自分自身を混乱させ始めたように感じます.

この目的は、ラウンド ロビン アルゴリズムを使用して、すべてのプロセスが完了するまでにかかる時間を計算することです。ユーザーにタイム クォンタムと、計算するプロセスの数を求めるプロンプトを表示します。そこから、プロセスの到着時間とバースト時間を割り当てるプロセスの数に基づいて for ステートメントをスローします。

なじみのない人のために説明すると、タイム クォンタムは次のプロセスに切り替わるまでに処理するサイクル数であり、バーストはそのプロセスを完了するのにかかるサイクル数であり、もちろん到着時間はそれまでに完了したサイクル数です。生きます。単純なアルゴリズムですが、CPU のスケジュールを表示するためのものです。誰かがそれを助けることができれば、それは素晴らしいことです! 私はとても迷っています。これを C# でやりたかったのですが、私のプログラミング スキルは C# では十分ではありません。

私が抱えている2つの問題は、ifステートメントにあり、自分自身を失い始めました.何らかの理由で、dif < parrive.get[ii]またはdif < parrive.get(ii)またはさらにif ステートメントの先頭で parrive.get[ii] を別の変数に割り当て、別の変数を使用する (示されているように)...

import java.io.*;
import java.util.*;

public class Thread{       

    public Thread() {
        inputexecute();
    }

    public void inputexecute(){

        Scanner x = new Scanner(System.in);
        int xx = 0;

        String choice = null;
        ArrayList parrive = new ArrayList();
        ArrayList pburst = new ArrayList();

        while (true){
            System.out.println("Enter the time quantum: ");
            int quant = x.nextInt();
            System.out.println("Enter the number of processes: ");
            int pnum = x.nextInt();

            for( int i=0; i<pnum; i++)
            {
                System.out.println("Enter the arival for p"+i+": ");
                int arrive = x.nextInt();
                parrive.add(arrive);

                System.out.println("Enter the burst time: ");
                int burst = x.nextInt();
                pburst.add(burst);    


            }

            int dif;
            for(int ii=0; ii < pnum; ii++)
            {
                int asw == parrive.get[ii];

                if (asw < quant)
                {
                    dif = quant - asw;
                }                    
                if (quant < asw)
                {
                    asw = asw - quant;
                }
                if (dif > 0)
                {

                }
            }
        } /* end while*/
    } /* end exec input*/
} /* class thread */
4

2 に答える 2

1

エラーは、代入の代わりに等値演算子 (==) を使用していることです。

                            int asw == parrive.get[ii];

する必要があります

                            int asw = parrive.get[ii];
于 2011-02-18T02:23:13.673 に答える
0

私がそれを書く方法

List<Integer> parrive = new ArrayList<Integer>();

for(int asw: parrive) {
    int dif = Math.abs(asw - quant);
    if (dif == 0) continue;
    // if dif > 0

}

私は仮定しています

asw = asw - quant;

する必要があります

dif = asw - quant;
于 2011-02-18T07:58:27.160 に答える