2015-02-06 2 views
-1

Код, который у меня кажется почти правильным. Ответ, который я получаю, равен 3,0, но это должно быть 2.6.Я имею Googled/посмотрел на другие ответы stackoverflow, но у меня нет исправления. Пробовал делать эту ошибку в течение 2 часов.Получение средней длины слов в предложении Java

Код:

public class Sentence { // words holds the array. 
private static String[] words = {"hi","my","name","is","Bob"}; 
} 

public String toString() { //Returns the array into Strings. 
    return Arrays.toString(words); 
} 

    public double meanLength(String s) { 
    String wordysplit[] = toString().split(", "); 
    float numWords = wordysplit.length; 
    float totalChar = 0; 
    for (int i = 0; i < numWords; i++) { 
     totalChar += wordysplit[i].length(); 

    } 
    return (totalChar/numWords); 
}  

public static void main(String[] args) // Really simplified this code to make it 
cleaner for you guys 
System.out.println("Mean word length:"+words.meanLength()); 

     } 
} 

Цените всяческую помощь. Благодарю.

+0

Просто из любопытства, что произойдет, если вы сделаете 'float numWords = wordysplit.length * 1.0;', 'totalChar + = wordysplit [i] .length() * 1.0;' и 'return ((totalChar/numWords) * 1.0; ' – npinti

+0

Имейте в виду, что у вас есть фигурная скобка, заканчивающая ваш класс Sentence, я не думаю, что это то, что вы хотите. – alephtwo

+0

@alephtwo Да, извините, что это была ошибка – bob9123

ответ

1

Вот простой способ сделать это

String resultString = StringUtils.join(words, ""); 
float avg = (float)resultString.length()/words.length; 

Обратите внимание, что StringUtils класс от Apache достоянию.

http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/StringUtils.html

Если вы не хотите, чтобы добавить Apache commons в свой проект, то вы можете использовать этот простой алгоритм для создания String из вашего массива:

String[] array = {"AB", "B", "C"}; 
StringBuilder builder = new StringBuilder(); 
for(String s : array) { 
    builder.append(s); 
} 

System.out.println((float)builder.toString().length()/array.length); 

печати Будет 1.3333334 в avg.

+0

Он говорит, что join (Java.util.Collection, String) В StringUtils нельзя применять к Java. lang.String []). После импорта импорт com.sun.deploy.util.StringUtils; – bob9123

+0

Хорошо попробовав другой способ. – bob9123

+0

Я не смогу использовать этот код, поскольку в моем массиве нет фиксированного количества элементов. Они всегда меняются. Поэтому я не знаю, будет ли использовать «/ 3», если у меня будет 6+ элементов – bob9123

Смежные вопросы