2017-03-07 1 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

첫째, 문자열의 길이에 따라 배열을 정렬합니다.

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

이것은 완벽하게 작동했습니다. 나는 Comparator에 대해 몰랐다. – art3mis