2013-05-12 40 views
-2

我有一個堆棧(記錄)與下面的內容:Java等於還是包含方法?

first 20130512142202 
second 20130512142204 
third 20130512142206 
fourth 20130512142209 
fifth 20130512142212 

,我要檢查,如果一個字符串值(可以說「第二」)在堆棧中提及到別的地方。 所以我嘗試:

while(!Records.empty()) { 
    String checkRecord=Records.pop().toString(); 
    if(checkRecord.equals("second")) { 
     System.out.println(checkRecord + " found"); 
    } 

    else { 
     System.out.println(checkRecord +" not found"); 
    } 
} 

System.out.println("END OF STACK"); 

equals返回假,這很好,因爲「第二」並不完全與「第二(20130512142204)」相同。所以,我需要別的東西,我試圖返回true,但返回true即使有:

string test = "second 20130512142204"; 
test.contains(rt); 

是包含()正確的正確選擇實現我需要什麼或者我應該嘗試不同的方法/修改我的碼? 當且僅當我給出的字符串是堆棧的一部分時,我纔想成爲true。

+0

這兩種方法都在按照他們的意思去做。你能詳細說明你需要什麼嗎?發佈一些例子和預期的輸出結果。 – Thihara 2013-05-12 12:33:39

+0

你不能使用地圖嗎?看起來像你的數據結構是一組對。然後,您可以輕鬆訪問值/密鑰 – 2013-05-12 12:34:43

+0

是的......兩種方法都完全相同。 StartWith可以是一個選項,但我仍然認爲你應該給我更多更好的例子,以便給你一個正確的答案。 – amod 2013-05-12 12:35:45

回答

0

如果你特別有興趣在你的問題中找到一個String startsWith「second」的堆棧示例。使用 「」 .startsWith()函數

所以代碼

while(!Records.empty()){ 
     String checkRecord=Records.pop().toString(); 

     //True when the current checkRecord string startsWith "second" 
     if(checkRecord.startsWith("second")) 
     { 

      System.out.println(checkRecord + " found"); 
     }else{ 
      System.out.println(checkRecord +" not found"); 
     } 
    } 
    System.out.println("END OF STACK"); 

此外, 「」。載有()函數必須做的完全一樣,上面的代碼。我不明白爲什麼它不適合你。