public class Process {
private String name;//进程名字
private int priority;//进程优先级,默认为5,1<=pri<=10
public Process(String name) {
super();
this.name = name;
priority = 5;
System.out.println("--------------------------------");
System.out.println("*****"+this.getName()+"已经生成!,优先级为"+this.getPriority()+"*****");
System.out.println("********************************");
}
public Process(String name, int priority) {
super();
this.name = name;
this.priority = priority;
System.out.println("--------------------------------");
System.out.println("*****"+this.getName()+"已经生成!,优先级为"+this.getPriority()+"*****");
System.out.println("********************************");
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getPriority() {
return priority;
}
public void setPriority(int priority) {
this.priority = priority;
}
}
import java.util.Scanner;
public class FIFO {
public int pageSize=3;
public Scanner input = new Scanner(System.in);
public String [] inPage= new String[pageSize];
public int [] cmp= new int[pageSize];//存放当前页面的优先级
public static void main(String[] args) {
new FIFO().fifo();
}
public void fifo(){
System.out.println("假设最多一次可以容纳为3个进程,进程默认优先级为5,输入-1表示退出");
int point=0;//类指针
String [] prNames =new String[1024];
int flag=0;
while(!(prNames[flag]=input.next()).equals("-1")){
Process p = new Process(prNames[flag]);
int loca=find(prNames[flag]);
if(flag<pageSize){
inPage[flag]=p.getName();
traverse();
}else if(prNames[flag].equals(prNames[flag-1])){
traverse();
continue;
}else if(loca!=-1){
point=(point+1)%pageSize;
traverse();
}else if(loca==-1){
inPage[point]=p.getName();
traverse();
point=(point+1)%pageSize;
}
flag++;
}
}
public int find(String str){
//如果返回-1说明没有找到相同的元素
int loca=-1;
for(int i=0;i<inPage.length;i++)
{
if(str.equals(inPage[i]))
loca=i;
}
return loca;
}
public void traverse(){
int i=0;
for (String str : inPage) {
System.out.println("--------------------------------");
System.out.println("第"+(i++)+"个页面存放的是"+str+"进程");
System.out.println("********************************");
}
}
}
import java.util.Scanner;
public class Priority {
public int pageSize=3;
public Scanner input = new Scanner(System.in);
public String [] inPage= new String[pageSize];
public int [] cmp= new int[pageSize];//存放当前页面的优先级
public String prName=null;
public int tempPri;
public static void main(String[] args) {
new Priority().pri();
}
public void pri(){
int flag=0;
while(true){
prName=input.next();
tempPri=input.nextInt();
Process p = new Process(prName,tempPri);
int minPage=com(tempPri);
if(flag<pageSize){
inPage[flag]=p.getName();
cmp[flag]=p.getPriority();
traverse();
}else if(minPage==-1){
traverse();
continue;
}else if(minPage!=-1){
inPage[minPage]=p.getName();
cmp[minPage]=p.getPriority();
traverse();
}
flag++;
}
}
public int com(int t){
int min=t;
//如果minPage等于-1说明新来进程比当前的优先级都低
int minPage=-1;
for(int i=0;i<pageSize;i++){
if(cmp[i]<min) {
min=cmp[i];
minPage=i;
}
}
return minPage;
}
public void traverse(){
int i=0;
for (String str : inPage) {
System.out.println("--------------------------------");
System.out.println("第"+(i++)+"个页面存放的是"+str+"进程");
System.out.println("********************************");
}
}
}