【发布时间】:2013-12-24 13:16:42
【问题描述】:
我正在为班级分配作业,但我的代码中某处出现了无限循环。我已经盯着它看了一天,甚至试图向我的教授寻求帮助(他出去了)。我尝试过调试,但中途迷路了。一组新鲜的眼睛将不胜感激。这是我的代码,如有必要,我可以提供更多。
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;
}
}
}
}
我不是在寻求帮助来完成任务。我觉得我需要自己做。由于某种原因,我真的被困在这里,并且可以在正确的方向上轻推。非常感谢。
【问题讨论】:
-
语言?这看起来可能是 Java 或 C/C++。
-
您确定在这些条件下需要 OR 吗?
-
@GreenMatt 它是 java
-
@Shomz 是的,我需要它们。只有当区域没有更多请求并且分配为空时,循环才应该结束。
-
是的,但是请阅读我的答案...是否会发生其中一个变为 -1 而另一个为 0 的情况?如果是这样,循环将继续,只有当 两个 都为零时,循环才会中断。
标签: java loops for-loop while-loop infinite-loop