2014-04-05 93 views
-1

我想重複調用WHILE()的函數,即Java堆棧 - 而彈出ING檢查彈出內容

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

而(C1 = g1.pop())不能工作,我不能在while循環返回true或false

+0

對於這樣一個小循環,爲什麼你不編程它,看看它是否工作? –

+0

@JustinJasmann編輯我的問題 –

+1

這看起來不像Java。你的僞代碼看起來是正確的。如果您遇到問題*在實際代碼中實施*,請發佈您遇到問題的真實代碼。 –

回答

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

這使我可以返回函數的實際狀態並同時重複彈出。

1

提供給while的表達式必須是Java中的布爾值,但c1=g1.pop()的計算結果爲新值c1

你需要的東西是這樣的:

while (!stack.isEmpty()) { 
    MyObject next = stack.pop(); 
    //... 
}