2017-03-07 9 views
0

私はJavaを使い始めましたが、計算をしたいと思っていましたが、間違っています。私はarraylistに追加された単語の中央の長さを取得しようとしています。私は配列でこれを行うコードを見つけるが、私はarraylistでこれを行うための解決策を見つけることができないようだ。 (個々の文字列の単語がテキストフィールドを介して追加されている)arraylistからのメジアンの長さを取得

ArrayList<String> stringList = new ArrayList<>(); 

double wordLength; 
double average; 
double middle; 
String medianNum; 

@Override 
protected void onCreate(Bundle savedInstanceState) {... 

    middle = 0; 

    for (String word2 : stringList) { 
     wordLength = stringList.length(); 
     middle = wordLength/2; 
    } 

    if (middle % 2 == 1){ 
     medianNum = String.format("%.2f", middle); 
    } else { 
     medianNum = String.format("%.2f", ((middle-1) + middle)/2.0); 
    } 

    // Add/Update the average number to the textview 
    medianLength.setText(medianNum); 


} 
+0

は中央値の長さを取得するには、最短から最長または副への配列をソートする必要があります。次のようにソート機能にComaratorを渡すことによって達成することができます。次に、以下のよう

Collections.sort(stringList, new Comparator<String>() { @Override public int compare(String s1, String s2) { return s1.length() - s2.length(); } }); 

、真ん中を取得逆の場合、配列のサイズが奇数の場合は中間の長さを取得し、偶数の場合は中間の要素の平均を計算する必要があります。 – Tuby

+0

私は以前これを読んだことがありますが、実装方法はわかりません。私は "Collections.sort(stringList);"を使ってソートすることを知っています;それは私が知る限りです。 – art3mis

+0

@Tubyコレクションに文字列が含まれている場合、2つの要素の平均をどのように計算できますか? –

答えて

2

まず、文字列の長さに応じて配列をソート:

これは私のコードです。

if (stringList.size() % 2 == 1) { 
    middle = stringList.get(stringList.size()/2).length(); 
} else { 
    middle = (stringList.get(stringList.size()/2).length() 
      + stringList.get(stringList.size()/2-1).length())/2.0; 
} 
+1

これは完全に機能しました。私はコンパレータについて知らなかった。 – art3mis

関連する問題