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

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

img

img

img

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