学艺不精,望大佬指正!
第一题:设计一个按优先数调度算法实现处理器调度的程序。
import java.util.*; public class Main { public static void main(String[] args) { method me=new method(); me.input(); me.run(); System.out.println("............................"); } } class pcb{ private String name; private String status; private int time; private int priorty; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } public int getTime() { return time; } public void setTime(int time) { this.time = time; } public int getPriorty() { return priorty; } public void setPriorty(int priorty) { this.priorty = priorty; } } class method{ ArrayList <pcb> al=new ArrayList<pcb>(); public void input(){ Scanner in=new Scanner(System.in); for(int i=0;i<2;i++){ System.out.println("请输入PCB["+(i+1)+"] name time priority"); pcb p=new pcb(); p.setName(in.next()); int n1=(int)(Math.random()*10); int n2=(int)(Math.random()*10); p.setTime(n1); p.setPriorty(n2); p.setStatus("ready"); al.add(p); } } //获取优先权最大的进程 public int getMax(List<pcb> li){ int max=0; int i=0; int k=0; Iterator <pcb>it=li.iterator(); while(it.hasNext()){ pcb p=(pcb)it.next(); if(p.getPriorty()>max){ max=p.getPriorty(); k=i; } i++; } return k; } //运行后进程优先权-1 public void renew(pcb p){ if(p.getPriorty()!=0) p.setPriorty(p.getPriorty()-1); else p.setPriorty(0); } public void show(){ Iterator <pcb> it=al.iterator(); while(it.hasNext()){ pcb p=it.next(); System.out.println(" "+p.getName()+" "+p.getTime()+" "+p.getPriorty()+" "+p.getStatus()); } System.out.println(); } public void run(){ while(al.size()!=0){ int max=getMax(al); pcb p=al.get(max); if((p.getTime()-1)!=0){ p.setStatus("working"); p.setTime(p.getTime()-1); show(); p.setStatus("ready"); } else{ p.setStatus("End"); p.setTime(p.getTime()-1); show(); p.setStatus("ready"); } renew(p); al.set(max, p); if(p.getTime()<=0){ System.out.println(" 进程"+p.getName()+"结束"); al.remove(max); } } } }