我想重复调用WHILE()中的函数,即
WHILE (temp=pop())
check temp
if found return true
else loop
IF finished looping but not found
return false
但我似乎无法实现WHILE(temp = pop())。还有其他办法吗?
以下是我编写代码的尝试:
while(c1=g1.pop()){
if (c1.regis.equals(r) == false) {
np1.enqueue(c1.regis, 'a');
counter++;
}else if (c1.regis.equals(r) == true) {
while (np1.isEmpty() != true) {
c2 = np1.dequeue();
g1.push(c2.regis, c2.status);
}
counter = g1.checkSpace();
return true;
}else{
return false;
}
}
while(c1 = g1.pop())无效,我在while循环中不能返回true或false
答案 0 :(得分:1)
提供给while
的表达式必须是Java中的布尔值,但c1=g1.pop()
计算为c1
的新值。
你需要这样的东西:
while (!stack.isEmpty()) {
MyObject next = stack.pop();
//...
}
答案 1 :(得分:0)
我添加了一个变量
boolean status = false;
存储函数的状态。
public boolean departure(String r, char t) {
int counter = 0;
boolean status = false;
do {
c1 = g1.pop();
if (c1.regis.equals(r) == false) {
np1.enqueue(c1.regis, 'a');
counter++;
} else if (c1.regis.equals(r) == true) {
while (np1.isEmpty() != true) {
c2 = np1.dequeue();
g1.push(c2.regis, c2.status);
}
status = true;
counter = g1.checkSpace();
} else {
status = false;
}
} while (counter < g1.checkSpace());
return status;
}
这允许我返回函数的实际状态并同时重复弹出。