2301_77589079 2023-05-15 02:25 采纳率: 54.5%
浏览 38
已结题

将C语言代码转换为java代码

将图一二c语言代码转换为java代码,并可以输出就如图三所示一样

img

img

img

  • 写回答

2条回答 默认 最新

  • 关注

    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();
        }
     
    } 
    
    
    
    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月26日
  • 创建了问题 5月15日

悬赏问题

  • ¥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 浮窗和全屏应用同时存在,全屏应用输入法无法弹出