2016-08-29 101 views
0

我有一個字符串,並希望拆分每個子字符串並將其添加到堆棧,除了要添加到列表的最後一個子字符串。如何分割一個字符串並查看它是否是字符串中的最後一個條目?

String keysFromString = One|Two|Three;  
Stack<String> s = new Stack<String>(); 
List <String> stringList = new ArrayList<String>(); 

    if (keysFromString .contains("|")) { 
     String[] keys = keysFromString .split("|"); 
    for (String key : keys) { 
      s.add(key) 
     } 
    } 

在這裏,我想一,二堆棧和三合一名單,但我不知道如何識別並添加最後一項以列爲指定字符串可能包含可變數目的子字符串。

回答

1
String keysFromString = "One|Two|Three";  
Stack<String> s = new Stack<String>(); 
List <String> stringList = new ArrayList<String>(); 

if (keysFromString .contains("|")) 
{ 
    String[] keys = keysFromString .split("|"); 
    //grab all but the last string in keys and add it to stack (s) 
    for (int i = 0; i < keys.length - 1; i++) 
    { 
     s.add(keys[i]) 
    } 
    //add the last string from the split method to the stringList 
    stringList.add(keys[keys.length - 1]); 
} 
1

在您的循環後添加stringList.add(s.pop());。使用

for (int i = 0; i < keys.length - 1; i++) { 
     s.add(keys[i]); 
    } 
+0

這仍然不會區分最後的子字符串和其餘的。 – yellow

+1

最後一個子字符串將位於堆棧頂部。 – Adam

+0

問題是如何將所有子字符串添加到除最後一個之外的堆棧,而不是將它們全部添加,然後刪除最後一個。 – numX

0

您可以替換當前的循環:

for (String key : keys) { 
     s.add(key) 
    } 

for (int i= 0; i<keys.length -1; i++) { 
      s.add(keys[i]); 
     } 

你不會在數組中添加的最後一個元素

使用keys.length,您將獲得屬性的數組長度。您可以使用它遍歷數組,排除最後一項:i<keys.length - 1。這不能通過使用for (String key : keys)技術來完成。

P.S. keys.length()不存在,因爲長度是屬性不是方法

0

+0

可否請您區分 String []鍵; keys.length vs key.length();其中鍵是鍵 – yellow

+0

內的條目我編輯了答案,包括這些:) – numX

+0

感謝您的解釋!但瑞恩Zink有更詳細的例子,所以upvoting它。 – yellow

相關問題