2011-02-10 10 views
0

ArrayList<String> pathClientStaticをループし、特定の要素をString[]にコピーするメソッドを記述する必要があります。要素の選択ペアのJava配列リストループとString []の返却

pathClientStaticスペース「」で区切られているタイムスタンプのX、Y

それぞれの文字列を含むArrayListで、タプルの数がパスがどれくらい長いと異なるが常にタプルが存在するであろう。したがって、タイムスタンプx yタイムスタンプx yタイムスタンプx yまたは単にタイムスタンプx yとすることができる。

ArrayListに複数のタプルがある場合、つまりタイムスタンプxyタイムスタンプxyは、配列内の最後のタプルペアのxyxyをコピーすることです。最後のxyと最後から2番目のxy String[]に入力します。現時点で私は以下のコードを持っています。

public static String[] returnLastFour() 
    { 
    String data = ""; 
    int pathSize = pathClientStatic.size(); 
    if (pathSize > 6) 
    { 
     data += pathClientStatic.get(pathClientStatic.size()-5) + " "; 
     data += pathClientStatic.get(pathClientStatic.size()-4) + " "; 
     data += pathClientStatic.get(pathClientStatic.size()-2) + " "; 
     data += pathClientStatic.get(pathClientStatic.size()-1); 
    } 
    else 
    { 
     data += "nothing"; 
    } 
    data.trim(); 
    String[] lastFour = data.split(" "); 
    return lastFour; 
    } 

何らかの理由で必ずしも最後の2つのxyペアを引き出すわけではありませんが。例えば、ArrayListが含まれている場合。

15:29:20.841 137.0 137.0 15:29:20.841 137.0 137.0 15:29:20.841 28.0 45.0

私が欲しいものであると終了するString[]

137.0 137.0 28.0 45.0

しかし、その代わりに私が取得します。

137.0 137.0 137.0 45.0

私はそれだけで明らかに間違いだと想像が、私はあまりにも長い間、私はちょうど今、ヘイズを見るために、このコードで遊んで/見つめてきました。

ヘルプありがとうございます。

+0

Stringに配置して分割する必要はありません。前にStringを作成して各要素を直接追加することができます。また、各get内でpathSizeを再利用してください。 – Argote

+0

@Argote前に文字列を作成するのはどういう意味ですか?私はそれが私が見ることができるpathSizeを使用するように変更します。ご協力いただきありがとうございます。 – mhollander38

+1

ああ、私はあなたが戻ったString配列を意味し、 'get'メソッドを呼び出す前にそれを作成し、それぞれの' get'の結果を出力String配列に直接割り当てます。 – Argote

答えて

0

コードは正しく表示されます。あなたはあなたの入力を絶対に確信していますか?

PS - それは代わりにdata += ...

のStringBuilderのを使用するのが最善です編集

今私はポジティブだ:あなたが列挙された入力にこのプログラムを実行する場合は、137.0 137.0 28.0 45.0を取得します。元の配列に移入するコードを確認します。

+0

好奇心から(私はそれを知らなかった)なぜ 'StringBuilder'を使うのが良いのですか? –

+3

パフォーマンス、Stringを変更するたびに、新しいObjectが作成されます。 – Argote

+0

チップをありがとう。 –