操作系统 fcfs pta(Java)版
package pta;
import java.util.Arrays;
import java.util.Scanner;
public class fcfs{
public static void main(String[] args) {
int i; //循环变量
int j; //循环变量
float b; //b用来交换到达时间,
float c; //c用来交换服务时间
String a; //a用来交换作业名
//System.out.println("请输入作业数量:");
Scanner writer = new Scanner(System.in);
int numb = writer.nextInt(); //numb记录作业数量
float[] finishTime = new float[numb]; //finishTime记录完成时间
float[] turnAroundTime =new float[numb]; //turnAroundTime记录周转时间
float[] daiTime=new float[numb]; //daiTime记录带权周转时间
String[] workName = new String[numb]; //workName记录作业名
float[] reachTime= new float[numb]; //reachTime记录作业到达时间
float[] serviceTime= new float[numb]; //serviceTime记录作业服务时间
//System.out.println("请输入作业名称:");
for(i=0;i<numb;i++) { //输入作业名
workName[i]=writer.next();
}
//System.out.println("请输入作业到达时间:");
for(i=0;i<numb;i++) { //输入作业到达时间
reachTime[i] = writer.nextFloat();
}
//System.out.println("请输入作业服务时间:");
for(i=0;i<numb;i++) { //输入作业服务时间
serviceTime[i] = writer.nextFloat();
}
//System.out.println("完成输入!");
for(j=0;j<numb-1;j++) { //通过比较到达时间来确定服务顺序
for(i=j+1;i<numb;i++) {
if(reachTime[i]<reachTime[j]) {
b=reachTime[i];//交换到达时间
reachTime[i]=reachTime[j];
reachTime[j]=b;
a=workName[i];//交换作业名字
workName[i]=workName[j];
workName[j]=a;
c=serviceTime[i];//交换作业服务时间
serviceTime[i]=serviceTime[j];
serviceTime[j]=c;
}
}
}
// for(i=0;i<numb;i++) {
// System.out.printf("%d",serviceTime[i]);
// System.out.printf("%s",workName[i]);
// System.out.printf("%d ",reachTime[i]);
// }
for(i=0;i<numb;i++) { //计算过程
if(i==0) {
finishTime[i]=reachTime[i]+serviceTime[i];
}
else {
if(finishTime[i-1]<reachTime[i]){
finishTime[i]=reachTime[i]+serviceTime[i];
}
else {
finishTime[i]=finishTime[i-1]+serviceTime[i];
}
}
turnAroundTime[i]=finishTime[i]-reachTime[i];
daiTime[i]=turnAroundTime[i]/serviceTime[i];
}
System.out.printf("作 业 名:"); //输出作业名
for(i=0;i<numb;i++) {
if(i<numb-1) {
System.out.printf("%s ",workName[i]);
}
else {
System.out.printf("%s",workName[i]);
}
}
System.out.printf("\n到达时间:"); //输出到达时间
for(i=0;i<numb;i++) {
if(i<numb-1){
System.out.printf("%.0f ",reachTime[i]);
}
else {
System.out.printf("%.0f",reachTime[i]);
}
}
System.out.printf("\n服务时间:"); //输出服务时间
for(i=0;i<numb;i++) {
if(i<numb-1) {
System.out.printf("%.0f ",serviceTime[i]);
}
else {
System.out.printf("%.0f",serviceTime[i]);
}
}
System.out.printf("\n完成时间:"); //输出完成时间
for(i=0;i<numb;i++) {
if(i<numb-1) {
System.out.printf("%.0f ",finishTime[i]);
}
else {
System.out.printf("%.0f",finishTime[i]);
}
}
System.out.printf("\n周转时间:"); //输出周转时间
for(i=0;i<numb;i++) {
if(i<numb-1) {
System.out.printf("%.0f ",turnAroundTime[i]);
}
else {
System.out.printf("%.0f",turnAroundTime[i]);
}
}
System.out.printf("\n带权周转时间:"); //输出带权周转时间
for(i=0;i<numb;i++) {
if(i<numb-1) {
System.out.printf("%.2f ",daiTime[i]);
}
else {
System.out.printf("%.2f",daiTime[i]);
}
}
}
}