1
votes

Longueur moyenne de chaque élément du tableau de chaînes

J'essaie d'obtenir une longueur moyenne de chaque élément de mon tableau de chaînes. Mais pas sûr avec mon code. Des suggestions?

public static double averageLength(String[] words, int count) {

        double countedLength = 0.0;


        for(int i = 0; i < words.length; i++) {
            countedLength += words[i].length();
            count++;
        }

        return (double)countedLength / count;
    }


5 commentaires

Pourquoi avez-vous count comme paramètre? Et si tous les éléments du tableau sont comptés sans condition, pourquoi maintenir un décompte quand vous pouvez utiliser la longueur de word ?


cela faisait partie des instructions d'avoir le compte comme paramètre.


Méthode: double averageLength (String [] words, int count) Renvoie: double, la longueur moyenne des premiers mots de comptage dans les mots du tableau


Ensuite, votre problème est que vous itérez jusqu'à words.length . Vous devez changer votre déclaration de boucle en for (int i = 0; i . Et supprimez count ++; du corps de la boucle


Oui, cela résout mon problème, merci.


3 Réponses :


0
votes

Changer le retour en

 return (double)countedLength / words.length;


0 commentaires

0
votes

Lorsque vous faites la moyenne, vous devez diviser par le nombre d'éléments que vous avez résumés. De plus, dans votre méthode, vous n'avez pas besoin de passer la variable count car elle n'est pas utilisée dans votre méthode.

public static double averageLength(String[] words) {
  int countedLength = 0;
  for(String word : words) {
    countedLength += word.length();
  }
  return countedLength / words.length;
}

Juste par intérêt, vous pouvez toujours utiliser la structure de la boucle foreach pour parcourir les éléments:

public static double averageLength(String[] words) {
  double countedLength = 0.0;
  for(int i = 0; i < words.length; i++) {
    countedLength += words[i].length();
  }
  return countedLength / words.length;
}

Le résultat est cependant le même.


0 commentaires

2
votes

Vous pouvez également utiliser l'API Stream pour cette tâche:

public static double averageLength(String[] words) {
    return Arrays.stream(words)
                .mapToDouble(String::length)
                .average()
                .getAsDouble();
}


2 commentaires

... ou simplement .mapToDouble (String :: length) .


Oh mon Dieu! =) On dirait que quelqu'un ne s'est pas encore réveillé ... Merci. =)