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