Academic Integrity: tutoring, explanations, and feedback — we don’t complete graded work or submit on a student’s behalf.

I am trying to implement the shortest job first scheduling algorithm in java, ho

ID: 3798406 • Letter: I

Question

I am trying to implement the shortest job first scheduling algorithm in java, however i need help filling in the else statement.


import java.util.ArrayList;

public class SJF {
   private Process shortest;
   private int quantum;
   private ArrayList<Process> process;
   private ArrayList<Process> queue;
   private ArrayList<Process> stat;
   private ArrayList<String> output;
  
   public SJF(ArrayList<Process> process) // received data
   {
       this.shortest = new Process(); // created a new process
       this.quantum = quantum;
       this.process = process;
       this.queue = new ArrayList<Process>();
       this.stat = new ArrayList<Process>();
       this.output = new ArrayList<String>();
      
       run();
   }

   private void run() {
       while (quantum < 100) //requirements
       {
           while (quantum < 100)
           {
               // add all process
               for (Process p: process)
               {
                   if (p.getArrivalTime() < quantum) // if arrival time < 100
                   {  
                       queue.add(p);  
                   }
               }
               process.removeAll(queue); // remove process that has been added to the queue
              
               //if queue is empty, add null.
               //else add shortest process
               if(queue.isEmpty())
               {
                   output.add(""); //queue is null
                   quantum++;
               }
               else
{
// i need help here
               }
           }
       }
      
   }

}

this is the Process class.

import java.util.Random;

public class Process {
private float arrivalTime; //[0 - 99]
private float runTime; //[.1 - 10]
private int priority; //[1 - 4]
private String name;
private int actualStartTime;
private int quantumWaitAmount;
private int endTime;

private float quantaTime;

/**
* Creates a new process
*/
public Process()
{
int seed = 1; //Can be used with Random(seed) to guarantee the same values each run
Random r = new Random();
arrivalTime = r.nextFloat() * 99;
runTime = r.nextFloat() * 10;
if(runTime == 0) runTime += .1;
priority = r.nextInt(4) + 1;
quantumWaitAmount = 0;
actualStartTime = -1;
endTime = -1;
quantaTime = 0.0f;
}

public float getArrivalTime()
{
return arrivalTime;
}

public float getRunTime()
{
return runTime;
}

public int getPriority()
{
return priority;
}

public String getName()
{
return name;
}

public void setArrivalTime(float arrivalTime)
{
this.arrivalTime = arrivalTime;
}

public void setRunTime(float runTime)
{
this.runTime = runTime;
}

public void setPriority(int priority)
{
this.priority = priority;
}

public void setName(String name)
{
this.name = name;
}

public void setActualStartTime(int actualStartTime) {
if(this.actualStartTime < 0) {
this.actualStartTime = actualStartTime;
}
}

public void decrementQuantumWaitTimeAmount() {
       quantumWaitAmount--;
}

public void incrementQuantumWaitAmount() {
quantumWaitAmount++;

if(quantumWaitAmount == 5) {
quantumWaitAmount = 0;

increasePriority();
}
}

public void decrementRunTime() {
runTime--;
}

public float getQuantaTime() {
       return quantaTime;
   }

public void incrementQuantaTime() {
       this.quantaTime = quantaTime++;
   }

public void setEndTime(int endTime) {
this.endTime = endTime;
}

public void increasePriority() {
if(priority > 1) {
priority--;
}
}

public String printProcess()
{
return String.format("Process Name: %s, Arrival Time: %s, Runtime: %s, Priority: %s",
name, arrivalTime, runTime, priority);
}
}

Explanation / Answer

Answer:


import java.util.ArrayList;

public class SJF {
   private Process shortest;
   private int quantum;
   private ArrayList<Process> process;
   private ArrayList<Process> queue;
   private ArrayList<Process> stat;
   private ArrayList<String> output;
  
   public SJF(ArrayList<Process> process) // received data
   {
       this.shortest = new Process(); // created a new process
       this.quantum = quantum;
       this.process = process;
       this.queue = new ArrayList<Process>();
       this.stat = new ArrayList<Process>();
       this.output = new ArrayList<String>();
      
       run();
   }

   private void run() {
       while (quantum < 100) //requirements
       {
           while (quantum < 100)
           {
               // add all process
               for (Process p: process)
               {
                   if (p.getArrivalTime() < quantum) // if arrival time < 100
                   {  
                       queue.add(p);  
                   }
               }
               process.removeAll(queue); // remove process that has been added to the queue
              
               //if queue is empty, add null.
               //else add shortest process
               if(queue.isEmpty())
               {
                   output.add(""); //queue is null
                   quantum++;
               }
               else
{
return quantum;// i need help here
               }
           }
       }
      
   }

}

this is the Process class.

import java.util.Random;

public class Process {
private float arrivalTime; //[0 - 99]
private float runTime; //[.1 - 10]
private int priority; //[1 - 4]
private String name;
private int actualStartTime;
private int quantumWaitAmount;
private int endTime;

private float quantaTime;

/**
* Creates a new process
*/
public Process()
{
int seed = 1; //Can be used with Random(seed) to guarantee the same values each run
Random r = new Random();
arrivalTime = r.nextFloat() * 99;
runTime = r.nextFloat() * 10;
if(runTime == 0) runTime += .1;
priority = r.nextInt(4) + 1;
quantumWaitAmount = 0;
actualStartTime = -1;
endTime = -1;
quantaTime = 0.0f;
}

public float getArrivalTime()
{
return arrivalTime;
}

public float getRunTime()
{
return runTime;
}

public int getPriority()
{
return priority;
}

public String getName()
{
return name;
}

public void setArrivalTime(float arrivalTime)
{
this.arrivalTime = arrivalTime;
}

public void setRunTime(float runTime)
{
this.runTime = runTime;
}

public void setPriority(int priority)
{
this.priority = priority;
}

public void setName(String name)
{
this.name = name;
}

public void setActualStartTime(int actualStartTime) {
if(this.actualStartTime < 0) {
this.actualStartTime = actualStartTime;
}
}

public void decrementQuantumWaitTimeAmount() {
       quantumWaitAmount--;
}

public void incrementQuantumWaitAmount() {
quantumWaitAmount++;

if(quantumWaitAmount == 5) {
quantumWaitAmount = 0;

increasePriority();
}
}

public void decrementRunTime() {
runTime--;
}

public float getQuantaTime() {
       return quantaTime;
   }

public void incrementQuantaTime() {
       this.quantaTime = quantaTime++;
   }

public void setEndTime(int endTime) {
this.endTime = endTime;
}

public void increasePriority() {
if(priority > 1) {
priority--;
}
}

public String printProcess()
{
return String.format("Process Name: %s, Arrival Time: %s, Runtime: %s, Priority: %s",
name, arrivalTime, runTime, priority);
}
}

Hire Me For All Your Tutoring Needs
Integrity-first tutoring: clear explanations, guidance, and feedback.
Drop an Email at
drjack9650@gmail.com
Chat Now And Get Quote