这是hwk链接提示以帮助解决任何问题。阅读下面看我的问题。这只是信息来了解我的问题是什么入队和出队程序运行只是不知道为什么输出不匹配
http://penguin.ewu.edu/cscd300/Spring_12/Assignments/prog2.html
使用队列和栈,在就业形式而言,我得到安宁家庭作业,基本上需要一个输入文件,并写入命令的参数来计算运行时间。即时通讯给出下面看到的输入文件:
Media Player
100
Angry Birds
140
我们然后键入在jgrasp参数如“jobs.txt 50 1”,这意味着文本文件,时间片,和等待时间。 (见上面的链接) 这里是上面显示基于样品输入程序执行的一个示例:
C:\classes\cscd300\queues>java QueueSimulation jobs.txt 50 1
Time Slice: 50
Latency: 1
Adding Jobs to Queue
--------------------
Media Player, 100 milliseconds to execute
Angry Birds, 140 milliseconds to execute
Begin Job Processing
--------------------
Executing Media Player, 100 milliseconds remaining
Executing Angry Birds, 140 milliseconds remaining
Executing Media Player, 50 milliseconds remaining
*Media Player finished, total time to execute was 153 milliseconds
Executing Angry Birds, 90 milliseconds remaining
*Angry Birds finished, total time to execute was 244 milliseconds
所有作业完成!
这里是我的代码:(这里是一个工作类,一个测试人员,和一个linkedqueue类,我用它来创建我自己的类enqueue和dequeue(部分hwk,我没有包含它,因为那很多代码,只知道,入队和出队的方法),我的问题是在测试仪:
public class Job {
String jobName;
int runTime;
int remainTime;
int startTime;
//constructures
public Job() {
jobName = "";
runTime = 0;
remainTime = 0;
startTime = 0;
}
public Job(String _jobName, int _runTime) {
jobName = _jobName;
runTime = _runTime;
remainTime = _runTime;
startTime = 0;
}
}
public class QueueTester {
public static void main(String[] args) {
linkedQueue waitQ = new linkedQueue();
linkedQueue runQ = new linkedQueue();
String fileName = "no_fileName";
int slice = 0, timeSW=0;
if (args.length !=3)
throw new IllegalStateException("No command line arguments...\n");
fileName = args[0];
slice = Integer.parseInt(args[1]);
timeSW = Integer.parseInt(args[2]);
System.out.println("\nTime Slice: " + slice);
System.out.println("\nLatency: " +timeSW + "\n");
Job job = null;
try {
FileInputStream fstream = new FileInputStream(fileName);
DataInputStream in = new DataInputStream(fstream);
BufferedReader br = new BufferedReader(new InputStreamReader(in));
String strLine;
System.out.println("adding jobs to queue");
System.out.println("--------------------");
boolean first = true;
while ((strLine = br.readLine()) != null) {
if (job == null)
job = new Job("", 0);
strLine = strLine.trim();
if (strLine.startsWith("#")) continue;
if (strLine.length() == 0) continue;
if (first) {
job.jobName = strLine;
first = false;
} else {
job.runTime = Integer.parseInt(strLine);
job.remainTime = job.runTime;
job.startTime = 0;
System.out.println(job.jobName + ", " + job.runTime + "milliseconds to excecute.");
waitQ.enqueue(job); //enqueue
job = null;
first = true;
}
}
in.close(); //close the input stream
}
catch (Exception e) {
System.err.println("Error: " + e.getMessage());
}
Job waitJob;
System.out.println("\nBegin Job Processing");
System.out.println("---------------------");
boolean done = false;
int elapsed = 0;
while (!done) {
while(!waitQ.isEmpty()) {
waitJob = (Job)waitQ.dequeue();//dequeue
runQ.enqueue(waitJob); //enqueue
}
Job runJob;
while (!runQ.isEmpty()) {
runJob = (Job)(runQ.dequeue());
System.out.println("excecuting [" +runJob.jobName + "] " + runJob.remainTime + "milliseconds remaining");
if (slice < runJob.remainTime) {
runJob.remainTime -= slice;
if (runQ.isEmpty() && waitQ.isEmpty())
elapsed += slice;
else
elapsed += (slice + timeSW);
waitQ.enqueue(runJob);
}else {
int num = runJob.runTime + timeSW + runJob.remainTime;
System.out.println("*" + runJob.jobName + ", total time to execute was " +num+ "milliseconds");
}
}
}
}
}
我的程序工作,但我下面的输出结果我的问题是,为什么它输出错误如果你能帮助我吗?对我的测试仪类进行更正,以使输出匹配,这将是可怕的。只是帮助我找到我的错误或我需要补充的谢谢:) *
Begin Job Processing
---------------------
excecuting [Media Player] 100milliseconds remaining
excecuting [Angry Birds] 140milliseconds remaining
excecuting [Media Player] 50milliseconds remaining
*Media Player, total time to execute was 151milliseconds
excecuting [Angry Birds] 90milliseconds remaining
excecuting [Angry Birds] 40milliseconds remaining
*Angry Birds, total time to execute was 181milliseconds
嗯那种有道理......那么最好的解决方案是什么? – anthony 2012-04-22 23:40:16
最佳解决方案?你在你的代码中缺少一些东西。在将其添加回队列之前,只需在运行时添加50毫秒的作业时间即可。 – 2012-04-23 01:22:56
@anthony:答案有问题吗? – 2012-04-23 19:22:12