Java Stack - 弹出检查弹出内容

时间:2014-04-05 15:48:01

标签: java loops stack pop

我想重复调用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

2 个答案:

答案 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;
    }

这允许我返回函数的实际状态并同时重复弹出。