电商网站建设培训班,怎么给自己建网站,网站建设维护和网页设计,大学网站 作风建设专题一、概述因为这次os作业对用户在控制台的输入输出有要求#xff0c;所以我花了挺多的代码来完善控制台的显示。也因为我这次要实现多个类似算法#xff0c;所以将一些共性单独提取出来作为一个类。如果只想要和算法有关的核心代码#xff0c;看RR类的calc()即可。实现思路所以我花了挺多的代码来完善控制台的显示。也因为我这次要实现多个类似算法所以将一些共性单独提取出来作为一个类。如果只想要和算法有关的核心代码看RR类的calc()即可。实现思路每运行一个进程则将所有进程的remainServiceTime减去一个时间片的长度。二、运行结果1. 测试数据2. 运行结果三、流程图四、实现代码1. RR类(主类)只有calc()中涉及了算法init()和printResult()只有简单的输入输出操作。1 packagexqy.algorithm;23 import java.util.*;45 importxqy.Util.Tools;6 importxqy.been.Process;78 /**9 *authorxqy10 * date 2018年12月19日19:14:4911 */12 public classRR {13 private intprocessNumber;14 private ArrayListprocessList;15 private inttimeSlice;1617 publicRR() {18 init();19 calc();20 Tools.printResult(processList);21 }2223 private voidinit() {24 Scanner sc newScanner(System.in);2526 System.out.print( Please enter the slice time:);27 timeSlice sc.nextInt();28 System.out.print( please enter the process num:);29 processNumber sc.nextInt();3031 processList new ArrayList();32 for (int i 0; i processNumber; i) {33 processList.add(newProcess());34 }3536 System.out.println( Please enter each process arrival time:);37 for (int i 0; i processNumber; i) {38 System.out.print( Process (i 1) :);39 processList.get(i).setArrivalTime(sc.nextInt());40 }4142 System.out.println( Please enter each process service time:);43 for (int i 0; i processNumber; i) {44 System.out.print( Process (i 1) :);45 int servicesTime sc.nextInt();4647 processList.get(i).setServicesTime(servicesTime);48 processList.get(i).setRemainServiceTime(servicesTime);49 }50 }5152 private voidcalc() {53 int timeNow 0;54 int processRemain processNumber;55 booleannoProcessRunInThisTurn;56 Process opProcess;5758 while (processRemain ! 0) {59 noProcessRunInThisTurn true;6061 for (int i 0; i processNumber; i) {62 opProcess processList.get(i);6364 if ((opProcess.getRemainServiceTime() 0)65 (timeNow opProcess.getArrivalTime())) {66 //First time67 if (opProcess.getServicesTime() opProcess68 .getRemainServiceTime()) {69 int waitTime timeNow -opProcess.getArrivalTime();7071 opProcess.setStartTime(timeNow);72 opProcess.setWaitTime(waitTime);73 }7475 //Calculating remain service time76 int remainServiceTime opProcess.getRemainServiceTime()77 -timeSlice;78 opProcess.setRemainServiceTime(remainServiceTime);7980 //Last time81 if (remainServiceTime 0) {82 int completionTime timeNow timeSlice; //The process ends when the current slice is completed.83 int turnAroundTime completionTime84 -opProcess.getArrivalTime();85 double turnAroundTimeWithWeight 1.0 *turnAroundTime86 /opProcess.getServicesTime();8788 opProcess.setCompletionTime(completionTime);89 opProcess.setTurnAroundTime(turnAroundTime);90 opProcess91 .setTurnAroundTimeWithWeight(turnAroundTimeWithWeight);92 processRemain--;93 }9495 timeNow timeSlice;96 noProcessRunInThisTurn false;9798 System.out.println( #STEP# Process (i 1)99 remain service time:100 opProcess.getRemainServiceTime()101 , timeBefore: (timeNow - 1) , timeNow:102 timeNow103 ((remainServiceTime 0) ? Finish : ));104 } else{105 //do noting, because this process has been completed or hasnt arrived.106 }107 }108109 //Means no process could run, because they have arrived.110 if ((processRemain 0) noProcessRunInThisTurn) {111 timeNow timeSlice;112 }113 }114 }115 }2. Process类模拟了进程对属性进行了封装。1 package xqy.been;23 public class Process {4 private int arrivalTime;5 private int servicesTime;6 private int remainServiceTime;7 private int startTime;8 private int waitTime;9 private int completionTime;1011 /**12 * turnAroundTime completionTime - arrivalTime13 */14 private int turnAroundTime;1516 /**17 * turnAroundTimeWithWeight turnAroundTime / servicesTime18 */19 private double turnAroundTimeWithWeight;2021 public Process() {22 ;23 }2425 public int getArrivalTime() {26 return arrivalTime;27 }2829 public void setArrivalTime(int arrivalTime) {30 this.arrivalTime arrivalTime;31 }3233 public int getServicesTime() {34 return servicesTime;35 }3637 public void setServicesTime(int servicesTime) {38 this.servicesTime servicesTime;39 }4041 public int getRemainServiceTime() {42 return remainServiceTime;43 }4445 public void setRemainServiceTime(int remainServiceTime) {46 this.remainServiceTime remainServiceTime;47 }4849 public int getStartTime() {50 return startTime;51 }5253 public void setStartTime(int startTime) {54 this.startTime startTime;55 }5657 public int getWaitTime() {58 return waitTime;59 }6061 public void setWaitTime(int waitTime) {62 this.waitTime waitTime;63 }6465 public int getCompletionTime() {66 return completionTime;67 }6869 public void setCompletionTime(int completionTime) {70 this.completionTime completionTime;71 }7273 public int getTurnAroundTime() {74 return turnAroundTime;75 }7677 public void setTurnAroundTime(int turnAroundTime) {78 this.turnAroundTime turnAroundTime;79 }8081 public double getTurnAroundTimeWithWeight() {82 return turnAroundTimeWithWeight;83 }8485 public void setTurnAroundTimeWithWeight(double turnAroundTimeWithWeight) {86 this.turnAroundTimeWithWeight turnAroundTimeWithWeight;87 }8889 Override90 public String toString() {91 return Process [arrivalTime arrivalTime , servicesTime92 servicesTime , remainServiceTime remainServiceTime93 , startTime startTime , waitTime waitTime94 , completionTime completionTime , turnAroundTime95 turnAroundTime , turnAroundTimeWithWeight96 turnAroundTimeWithWeight ];97 }98 }3. Tools类因为这次要实现几个类似的算法所以我把每个算法中都要用到的方法都提取出来作为单独的工具类。也可以将这些工具方法都放入FCFS类中。1 package xqy.Util;23 import java.util.ArrayList;45 import xqy.been.Process;67 public class Tools {89 public static double calcAverageTurnAroundTime(10 ArrayList processList) {11 double sum 0;12 for (int i 0; i processList.size(); i) {13 sum processList.get(i).getTurnAroundTime();14 }15 return Math.round(sum / processList.size() * 100) / 100.0;16 }1718 public static double calcAverageTurnAroundTimeWithWeight(19 ArrayList processList) {20 double sum 0;21 for (int i 0; i processList.size(); i) {22 sum processList.get(i).getTurnAroundTimeWithWeight();23 }24 return Math.round(sum / processList.size() * 100) / 100.0;25 }2627 public static void printResult(ArrayList processList) {28 System.out.println(n #RESULT#);2930 System.out.print(tArrive:tt);31 for (int i 0; i processList.size(); i) {32 System.out.print(processList.get(i).getArrivalTime() t);33 }34 System.out.println();3536 System.out.print(tService:t);37 for (int i 0; i processList.size(); i) {38 System.out.print(processList.get(i).getServicesTime() t);39 }40 System.out.println();4142 System.out.print(tStart:tt);43 for (int i 0; i processList.size(); i) {44 System.out.print(processList.get(i).getStartTime() t);45 }46 System.out.println();4748 System.out.print(tWait:tt);49 for (int i 0; i processList.size(); i) {50 System.out.print(processList.get(i).getWaitTime() t);51 }52 System.out.println();5354 System.out.print(tFinish:tt);55 for (int i 0; i processList.size(); i) {56 System.out.print(processList.get(i).getCompletionTime() t);57 }58 System.out.println();5960 System.out.print(tTurn around:t);61 for (int i 0; i processList.size(); i) {62 System.out.print(processList.get(i).getTurnAroundTime() t);63 }64 System.out.println();6566 System.out.print(tTA wight:t);67 for (int i 0; i processList.size(); i) {68 System.out.print(Math.round(processList.get(i)69 .getTurnAroundTimeWithWeight() * 100) / 100.0 t);70 }71 System.out.println();7273 System.out.println(tAverage turn around time:74 Tools.calcAverageTurnAroundTime(processList) t);75 System.out.println(tAverage turn around time with wight:76 Tools.calcAverageTurnAroundTimeWithWeight(processList));7778 System.out.println();79 }80 }内容来源于网络如有侵权请私信删除