Je fais actuellement un projet d'école et dans ce projet, je dois demander à l'utilisateur son sexe, puis afficher une erreur qui fonctionne. Mais pour une raison quelconque, la boucle exécute toujours deux fois avant de laisser entrer l'utilisateur à nouveau.
Exemple: et voici le code p>
3 Réponses :
Le problème est avec votre logique de condition. Essayez ce qui suit et assurez-vous de le comprendre. Faites-moi savoir si vous ne comprenez pas la logique conditionnelle. Codage heureux!
while ((sex != ('f') && sex != ('F')) && (sex != ('h') && sex != ('H'))){
System.out.println ("Erreur veuillez entrer des valeurs valides"); //error message
System.out.println ("Veuillez entrer le sex de l'individu f/F ou h/H: "); //asking for user inoput again
sex = Clavier.lireChar();
}
Je comprends pourquoi vous utilisez && au lieu de || Mais même avec votre solution, il répète encore la boucle deux fois avant de demander à une entrée à nouveau.
Si vous entrez un caractère de H, H, F, F, la boucle va sortir, c'est ce que vous voulez bien?
Ouais c'est exactement ce dont j'ai besoin.
OK, alors le problème est avec votre fonction d'entrée. Essayez la solution fournie par @that Autre gars.
Le problème est que lorsque vous appuyez sur Vous pouvez entrer de la même manière Vous pouvez résoudre ce problème de deux manières. Le plus facile est probablement de lire un F code> suivi de Entrée, vous avez enfoncé deux touches et obtenez donc deux char code> S, une lettre minuscule F ( ' f ' code>) et un caractère ligneFeed / newline (' \ n ' code>). abc code> et appuyez sur Entrée, et vous appuyez sur Voir c'est des boucles 4 fois au lieu de 1. p> char code> en lisant une ligne entière, puis à l'aide de la première lettre. Je ne sais pas ce que ce Clavier CODE> classe est, mais s'il est similaire à Celui-ci Vous pouvez utiliser quelque chose comme: P> while ((sex = Clavier.lireChar()) == '\n');
Oui, j'ai déjà réparé le problème mentionné par Tushar mais à cause de la restriction que mon professeur nous a donné que je vais essayer la deuxième solution car elle ne permettra pas la première.
Je comprends donc ce que vous essayez de faire avec '\ n' mais je ne suis pas sûr où je devrais insérer tandis que ((sex = clavier.liechar ())! = '\ n'); code> pour cela travailler
@zactrixo j'ai accidentellement utilisé ! = code> au lieu de == code>. Vous pouvez remplacer sexe = clavier.lirechar (); code> avec tandis que ((sex = clavier.lechar ()) == '\ n'); code> où que vous utilisiez
Merci cela a fonctionné, j'espère juste que c'est une solution valide!
Probablement en retard à la fête, voici une autre solution.
En tant que couple des personnes mentionnées, le problème semble être avec votre condition à l'intérieur de la boucle tandis que la boucle tandis que je suis un peu inquiet que votre professeur ne permet pas d'utiliser le scanner, cependant! p>
Oui, je ne sais pas pourquoi elle ne veut pas que nous utilisions le scanner, c'est mais comme je l'ai dit plus tôt, je ne peux pas non plus utiliser Char sex = in.Next (). Charat (0); Code> Mais je ' Je vais continuer à faire ce que je peux et demandez à l'un des aides à l'école pour une solution.
@zactrixo Sure chose. Je ne sais pas quel point votre professeur essaie de prouver. Bonne chance!