0
votes

Impossible de brancher la chaîne convertie en bool dans si la déclaration en Java

Je suis un débutant désolé si cela est évident. J'ai un exercice que j'essaie de finir et que je ne peux pas sembler comprendre. J'ai la logique du programme vers le bas. Je suis censé deviner quel type de champignon quelqu'un envisage avec 3 questions sur 6 champignons.

Ils ont tous des caractéristiques. J'ai un arbre de décision avec oui et aucune réponse sur papier qui va me donner la réponse sur ce que la personne devine.

Le problème que je rencontre lorsque vous essayez de coder cela en Java est que l'instruction IF que j'essaye d'utiliser refuse la chaîne de variable, je sais que, même durs, je n'ai fait que Chaîne égale à une valeur booléenne.

J'ai essayé avec parse.boolantan () et ValueOf () et non plus. J'ai essayé simplement de faire

boolean oui = true;

alors j'ai essayé xxx

Le comportement souhaité est bien entendu que l'utilisateur entrerait «Oui» ou «Oui» (comme cela est effectué en français) dans l'entrée et pour la déclaration IF pour convertir cela en «True» ou «Non» converti en «Faux " Rien ne semble fonctionner!

Merci pour votre aide.


0 commentaires

3 Réponses :


0
votes

comparer simplement la ligne qui a été lue avec les mots que vous souhaitez analaiser. XXX


3 commentaires

Wow ça a fonctionné !! Il en avait besoin d'un autre) à la fin depuis que le ("oui") utilise la parenthèse qui m'a jeté un peu, mais autre que cela remercie monsieur c'est incroyable, je peux compléter mon programme et vous répondez super vite !!!


Une question, quelle est .tolowercase () dans cette fonction? J'ai essayé avec des majuscules et ça marche aussi ... Qu'est-ce qui donne?


C'est seulement pour vous assurer que, quelle que soit la manière dont le type d'utilisateur (oui, oui, oui, oui, oui ...) La chaîne sera la même valeur que le littéral dans le code.



0
votes

en Java, l'instruction IF n'accepte que des types booléens. Dans votre cas, vous essayez de transmettre l'objet de chaîne dans la déclaration. En regardant la logique, je pense que vous essayez d'abord d'analyser Oui / Non en langue française. Donc, vous pouvez combiner les deux processus en passant à la vérification de la chaîne en si instruction: xxx

la chaîne de comparaison au lieu de réponse1 ne posera pas d'exception même si réponse1 < / code> sera null . Cependant, si vous aimez vous pouvez en faire l'inverse xxx

remarque, cependant, que vous ne pouvez pas utiliser == lors de la comparaison les cordes parce que cela comparera les adresses d'un objet et non les cordes elles-mêmes.


2 commentaires

Merci beaucoup pour votre aide ! Qu'entendez-vous par «adresses d'un objet et non des cordes elle-même». ?


@Andreadavideelman Chaque objet a une adresse unique en mémoire. Si un programme souhaite obtenir la valeur de certaines variables, cela recherchera sa valeur par cette adresse.



0
votes

La raison pour laquelle cela ne fonctionne pas est que la valeur entrée est conservée dans la variable reponse1 . Même si le texte peut être identique au nom d'une variable, il ne devient pas cette variable.

Le contenu d'une chaîne ne fait que des lettres dans l'ordre. Ils ne correspondent pas aux noms des variables de quelque manière que ce soit.

Vous pouvez utiliser tolowercase () sur une chaîne pour la convertir à toutes les lettres minuscules, ce qui vous permet d'éviter les différences de capitalisation . Ensuite, pour vérifier si une chaîne correspond à une autre, utilisez simplement le Equals méthode. xxx


3 commentaires

Merci, je remarque que vous n'avez pas utilisé "en minuscule" contrairement aux autres? Pourquoi donc ?


@Andreadavideelman, je l'ai utilisé, mais il est juste au-dessus du si . La ligne reponse1 = reponse1.toloweracase (); stocke la version minuscule de la variable. Cela aide à éviter les 2 utilisations que d'autres réponses ont. Leur méthode vérifie simplement la valeur minuscule mais ne la conserve pas, entraînant une utilisation supplémentaire pour une autre valeur possible. Éviter la répétition peut aider à rendre votre code plus facile à comprendre et à déboguer.


Ah oui je le vois maintenant, brillant, il est en effet plus facile à lire! Je pense que je vais le faire comme ça! Merci !