Je fais ce problème comme pratique pour utiliser des méthodes en dehors de la méthode principale. Le problème nous a besoin de faire trois méthodes différentes, chacune d'entre elles une tâche différente, mais aucune d'entre elles ne doit se rapporter.
SmallestNumber (): Prendre 3 numéros entrés par l'utilisateur et sortir le plus petit numéro p>
moyenne (): Prenez 3 numéros entrées par l'utilisateur et sortie la moyenne p>
dénombe (): prenez une phrase saisie par l'utilisateur et sortie le nombre de voyelles dans cette phrase p >
Pour moi, je suis capable de retourner une valeur de la méthode 1 et de la méthode 2 à la méthode principale. Pour la méthode 3, lorsque j'essaie de retourner la valeur du compteur, il retourne toujours 0 même s'il y a des voyelles dans la phrase. P>
Quelqu'un peut-il s'il vous plaît expliquer ce que je fais mal? (Désolé avec les problèmes d'indentation, je n'ai jamais utilisé la pile débordement avant) P>
Je ne sais pas pourquoi il continue à retourner 0 p> } p> p>
3 Réponses :
Votre aussi, envisagez un nom de méthode plus significatif (comme compteur code> est un
int code> (pas un
chaîne code>) afin de renvoyer un
int code>. Au lieu de
string.indexof (chaîne) code> Vous devez utiliser
string.charat (int) code> (ou utilisez un
pour chacune code> sur
String.tocharray () code>). Il n'y a pas besoin d'incrémenter par zéro, et vous ne considérez que des lettres minuscules (donc appelez
string.tolowercase () code>). Comme,
dénombrement () code>). P> p>
Si votre méthode a un type de retour de chaîne, puis renvoyez une chaîne:
public static int method3(String words){ int count = 0; //logic here return count; }
Merci cela a aidé beaucoup beaucoup, mais j'ai toujours du mal à retourner la valeur réelle du compte. Peu importe ce qui se passe, il est toujours un 0 même après avoir changé le type de retour pour correspondre à ce que je revenais.
Cette réponse mérite un crédit, mais voir mon autre réponse ( Stackoverflow.com/a/56139520/1357094 ) qui aborde d'autres problèmes dans Votre code (il concerne le code d'origine dans votre question, et non le code que vous avez depuis modifié dans votre question depuis ensuite).
tolowercase code> chaque fichier le caractère code> pour compte pour étudier li>
- Faites un ensemble de toutes voyelles et vérifiez s'il contient chaque caractère de
mot code> (voir balle suivante) li>
- * Notez que
indexof code>, que votre code appelle votre code reviendra toujours à l'indice de la première occurrence; Cela fera que votre code ne renvoie pas toujours la réponse correcte, même après avoir déplacé le retour code> en dehors de la boucle. Votre code à l'aide de indexof code> le fait également avoir un quadratique O (n ^ 2) d'exécution strong> (où n est la longueur du mot code> code>). mes solutions ici n'utilisent pas indexof code> et sont linéaires O (n) dans l'exécution forte>. Votre solution et votre mine sont constantes O (1) espace mémoire. Li>
comme ci-dessous em>: p> xxx pré> meilleur (optimisation de style de code) - Utilisez une améliorée-for-boucle < / strong> em>: p> xxx pré> ul>
La densité n'est pas un problème. Cependant, non indenter, ce qui étant dit, si vous déclarez votre méthode pour renvoyer une chaîne code> code>, vous ne pouvez pas puis renvoyer un
int code> et vous attendre à ce que le compilateur ne se plaint pas .
1) Qu'est-ce que
comptez + = 0; code> censé faire? Ça ne fait rien. --- 2) Vous manquez le
} code> du
pour code> boucle. Si vous Indencé B> Le code correctement, vous le verriez immédiatement. --- 3)
Nombre code> est un
int code>, mais le type de retour est une chaîne
code>. Pourquoi? Modifier le type de retour sur
int code>. --- Quelle est votre méthode censée faire? Le nom
Méthode3 code> ne donne aucune idée. Vous êtes sûr de vouloir que le test soit
mots.indexof ("a") == i code> et non
mots.charat (i) == 'A' code>?
Vous devriez lire Eric Lippert 'Comment déboguer de petits programmes "d'Eric Lippert pour vous aider en tant que véritable programmeur: ericlippert.com/2014/03/05/how-a-debug-small-programs