2016-08-29 4 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) 
     } 
    } 

は、ここで私は、スタック内の一つ、二つ、リストの3をしたいが、私は特定し、与えられた文字列は、サブ文字列の変数番号が含まれ得るような一覧表示する最後のエントリを追加する方法などを確認していません。

答えて

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 (int i= 0; i<keys.length -1; i++) { 
      s.add(keys[i]); 
     } 

あなたは配列の最後の要素を追加しません

を使用して、あなたはプロパティの配列の長さを取得します。これを使用して、最後の項目:i<keys.length - 1を除いて、配列を反復処理できます。これは、for (String key : keys)技術を使用して行うことはできません。

P.S. keys.length()は存在しません長さはメソッドではないプロパティです

0

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

と:

+0

差別化できますか? String []キー; keys.length vs key.length(); keyはキー内のエントリです – yellow

+0

私はこれらを含める答えを編集しました:) – numX

+0

あなたの説明に感謝します!しかし、Ryan Zinkはもっと詳細な例を持ち、それを上書きしています。 – yellow

関連する問題