使用循环算法计算所需的时间

时间:2011-02-18 02:16:58

标签: java round-robin

也许有人在那里感觉很友好,会觉得这个脑筋急转弯很有趣......但我觉得也许我开始迷惑自己。

这样做的目的是使用循环算法计算完成所有进程所需的时间。我让它提示用户的时间量,然后它想要计算多少个进程。从那里开始,我会根据许多进程抛出for语句来分配进程到达时间和突发时间。

对于那些不熟悉的人来说,时间量是在切换到下一个之前它将处理多少个周期,突发是完成该过程需要多少个周期,当然,到达时间是有多少个周期在它到来之前完成。简单的算法,但它是如何显示CPU的计划。如果任何人都可以帮助所有这些都是神奇的!我迷路了。我想在C#中做到这一点,但我的编程技巧在C#中还不够。

我遇到的两个问题是在我的if语句中,我开始迷失自己,无论出于什么原因,在使用dif<编译时,它会给我一个错误。 parrive.get [ii]或dif< parrive.get(ii)或者甚至将parrive.get [ii]分配给我的if语句开头的另一个变量并使用另一个变量(如图所示)......

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 */

2 个答案:

答案 0 :(得分:1)

您的错误是您使用的是等号运算符(==)而不是赋值

                            int asw == parrive.get[ii];

应该是

                            int asw = parrive.get[ii];

答案 1 :(得分: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;