题目:到医院看病的过程是,患者先排队等候,排队过程中主要重复两件事:
(1) 病人到达诊室时,将病例交给护士,排到等候队列中候诊。
(2) 护士从等候队列中取出下一个患者的病例,该患者进入诊室就诊。
(1) 病人到达诊室时,将病例交给护士,排到等候队列中候诊。
(2) 护士从等候队列中取出下一个患者的病例,该患者进入诊室就诊。
在排队时按照“先到先服务”的原则。设计一个算法模拟病人等候就诊的过程。其中“病人到达”用命令A表示,“护士让下一位患者就诊”用命令N表示,“不再接受病人排队”就用命令Q表示。
命令行运行指令:java NurseAndPatient AANNAANAANNQ
import java.util.*;
public class NurseAndPatient {
public static void main(String[] args) {
if (args.length != 1) {
System.out.println("Argument error!");
return ;
}
Queue<Character> waitQueue = new LinkedList<Character>();
for (int i = 0; i < args[0].length(); i++) {
if (args[0].charAt(i) == 'A') {
waitQueue.offer('A');
System.out.println("Patient arrives");
}
else if (args[0].charAt(i) == 'N') {
if (!waitQueue.isEmpty()) {
System.out.println("Next patient");
waitQueue.remove();
}
//else
// System.out.println("No more patients");
}
else if (args[0].charAt(i) == 'Q') {
System.out.println("Over.");
return ;
}
else {
System.out.println("Argument error");
return ;
}
}
}
}