-1
votes

Comment puis-je retourner cette valeur "compteur" d'une méthode dans la méthode principale?

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

moyenne (): Prenez 3 numéros entrées par l'utilisateur et sortie la moyenne

dénombe (): prenez une phrase saisie par l'utilisateur et sortie le nombre de voyelles dans cette phrase

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.

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)

Je ne sais pas pourquoi il continue à retourner 0 xxx

}


3 commentaires

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 , vous ne pouvez pas puis renvoyer un int et vous attendre à ce que le compilateur ne se plaint pas .


1) Qu'est-ce que comptez + = 0; censé faire? Ça ne fait rien. --- 2) Vous manquez le } du pour boucle. Si vous Indencé Le code correctement, vous le verriez immédiatement. --- 3) Nombre est un int , mais le type de retour est une chaîne . Pourquoi? Modifier le type de retour sur int . --- Quelle est votre méthode censée faire? Le nom Méthode3 ne donne aucune idée. Vous êtes sûr de vouloir que le test soit mots.indexof ("a") == i et non mots.charat (i) == 'A' ?


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


3 Réponses :


0
votes

Votre compteur est un int (pas un chaîne ) afin de renvoyer un int . Au lieu de string.indexof (chaîne) Vous devez utiliser string.charat (int) (ou utilisez un pour chacune sur String.tocharray () ). 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 () ). Comme, xxx

aussi, envisagez un nom de méthode plus significatif (comme dénombrement () ).


0 commentaires

0
votes

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;

    }


2 commentaires

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).



0
votes
  • Déplacer le retour en dehors de la boucle (votre code retourner à l'intérieur, explique pourquoi vous obtenez toujours 0)
  • tolowercase chaque fichier le caractère pour compte pour étudier
  • Faites un ensemble de toutes voyelles et vérifiez s'il contient chaque caractère de mot (voir balle suivante)
  • * Notez que indexof , 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 en dehors de la boucle. Votre code à l'aide de indexof le fait également avoir un quadratique O (n ^ 2) d'exécution (où n est la longueur du mot ). mes solutions ici n'utilisent pas indexof et sont linéaires O (n) dans l'exécution . Votre solution et votre mine sont constantes O (1) espace mémoire.

    comme ci-dessous : xxx

    meilleur (optimisation de style de code) - Utilisez une améliorée-for-boucle < / strong> : xxx


0 commentaires