我正在为课程分配工作,我的代码中的某个地方会出现无限循环。我一直盯着它看了一天,甚至试图从我的教授那里得到帮助(他出去了)。我试过调试但是我在中途迷路了。一双新鲜的眼睛将非常感激。这是我的代码,如果有必要我可以提供更多。
while (numRequests != 0 || allocated.size() != 0) {
for(int k = 0; k < allocated.size(); k++) {
allocated.get(k).decreaseTime();
if (allocated.get(k).equals(0)) {
memory.deallocate(allocated.get(k).getId());
startPoint -= allocated.get(k).getSize();
allocated.remove(k);
k--;
}
}
for (int i = 0; i < pr.length; i++) {
if (pr[i] != null) {
String requestSize = pr[i].substring(0, pr[i].indexOf(","));
int rSize = Integer.parseInt(requestSize);
String requestTime = pr[i].substring(pr[i].indexOf(",") + 1);
int rTime = Integer.parseInt(requestTime);
int bSize = 0;
if (rSize <= 1024) {
bSize = 1024;
if (rSize <= 512) {
bSize = 512;
if (rSize <= 256) {
bSize = 256;
if (rSize <= 128) {
bSize = 128;
if (rSize <= 64) {
bSize = 64;
if (rSize <= 32) {
bSize = 32;
}
}
}
}
}
if (bSize <= (1024 - startPoint)) {
pr[i] = null;
numRequests--;
allocatedMemory am = new allocatedMemory(i+1, bSize, rTime);
allocated.add(am);
memory.allocate(i+1, rTime, startPoint, bSize);
startPoint += bSize;
}
}
else {
break;
}
}
}
}
我不是在寻求帮助来完成作业。我觉得自己需要这样做。我出于某种原因真的被困在这里,并且可以在正确的方向上使用轻推。非常感谢。
答案 0 :(得分:1)
您应该在while条件部分使用AND(&amp;&amp;),或者将其更改为
while (numRequests > 0 || allocated.size() > 0) {
一旦它们的下降到零或以下,这将打破循环。
原始条件只有在迭代中它们等于零时才会中断(可能会也可能不会发生)。