将图一二c语言代码转换为java代码,并可以输出就如图三所示一样
2条回答 默认 最新
- 技术专家团-小桥流水 2023-05-15 12:11关注
node.java
public class node { public int num; //进程号 public int worktime; //作业量 public long subtime; //提交时间 public long starttime; //开始运行时间 public long executetime;//执行时间 public long waittime;//等待时间 }
Task.java
import java.util.Calendar; import java.util.Scanner; public class Task { private node PCB[]; private int N ; private Scanner sc; public Task(){ PCB = new node[4]; for(int i=0;i<4;i++) PCB[i] = new node(); N = 4; sc = new Scanner(System.in); } //构造一个输出函数 public void print(){ int k; try{ System.out.print("\n进程的相关信息如下\n"); System.out.print("\n进程号 作业量 提交时间 开始运行时间 执行时间 等待时间\n"); for(k=0;k<N;k++){ System.out.println(PCB[k].num+ " "+PCB[k].worktime+" "+PCB[k].subtime+" "+PCB[k].starttime+" "+PCB[k].executetime+" "+PCB[k].waittime); } System.out.println("执行顺序:"); System.out.print(PCB[0].num); for(k=1;k<N;k++){ System.out.print("-->"+PCB[k].num); } System.out.println(); }catch(Exception e){ System.out.println("NULL PTR IN PRINT"); } } // 根据进程到达时间进行排序,从小到大 public void sort(){ int i,j; try{ for(i=1;i<N;i++){ node t = PCB[i]; for(j=i-1;j>=0 && t.subtime < PCB[j].subtime;j--) PCB[j+1] = PCB[j]; PCB[j+1] = t; } }catch(Exception e){ System.out.println("NULL PTR IN SORT"); } } //定义先来先服务函数 public void FCFS(){ sort(); long endtime=0,start,end,executetime; int t[] = new int[100]; try{ for(int m=0;m<N;m++){ t[m]=PCB[m].worktime*1000; } // PCB[0].starttime =PCB[0].subtime; for(int i=0;i<4;i++){ PCB[i].starttime =(endtime>PCB[i].subtime) ? endtime:PCB[i].subtime; start = Calendar.getInstance().getTimeInMillis(); while(t[i]>0) t[i]--; end = Calendar.getInstance().getTimeInMillis(); executetime = end-start; endtime =PCB[i].starttime + executetime; PCB[i].waittime = PCB[i].starttime - PCB[i].subtime; } }catch(Exception e){ System.out.println("NULL PTR IN FCFS"); } print(); } public void deal(){ int s[]=new int[100]; for(int m=0;m<N;m++){ s[m] = 1+(int)(10*Math.random()); //生成1到10的随机数 } try{ for(int i=0;i<4;i++){ //控制作业量为100-1000 //PCB[i].worktime = 100 +(int)(Math.random()*901); //控制提交时间数值小一点 PCB[i].subtime = Calendar.getInstance().getTimeInMillis() + s[i]; PCB[i].num = i; } }catch(Exception e){ System.out.println("NULL PTR IN DEAL"); } FCFS(); } public void setTask(){ try{ for(int i=0;i<4;i++){ System.out.print("task["+(i+1)+"]: "); PCB[i].worktime = sc.nextInt(); } }catch(Exception e){ System.out.println("scanner null"); } } }
Test.java(main入口程序)
public class Test { public static void main(String[] args){ Task tk = new Task(); tk.setTask(); tk.deal(); } }
解决 无用评论 打赏 举报
悬赏问题
- ¥15 Python 如何安装 distutils模块
- ¥15 关于#网络#的问题:网络是从楼上引一根网线下来,接了2台傻瓜交换机,也更换了ip还是不行
- ¥15 资源泄露软件闪退怎么解决?
- ¥15 CCF-CSP 2023 第三题 解压缩(50%)
- ¥30 comfyui openpose报错
- ¥20 Wpf Datarid单元格闪烁效果的实现
- ¥15 图像分割、图像边缘提取
- ¥15 sqlserver执行存储过程报错
- ¥100 nuxt、uniapp、ruoyi-vue 相关发布问题
- ¥15 浮窗和全屏应用同时存在,全屏应用输入法无法弹出