无法将转换为bool的字符串插入JAVA中的if语句
我是初学者,如果这是显而易见的,我很抱歉。我有一个练习,我正在努力完成,但似乎搞不懂。我已经搞定了程序的逻辑。我应该用6个蘑菇中的3个问题猜出某人在想什么类型的蘑菇
它们都有自己的特点。我在纸上有一个决策树,上面有是和否的答案,这将给我关于这个人在猜测什么的答案
我在Java中编写代码时遇到的问题是,我试图使用的IF语句拒绝了我输入的变量字符串(类型不匹配),即使我已经将该字符串设置为布尔值,也很难
我试过parse.Boolean()
和Valueof()
两种方法都不管用。我只是试着去做
boolean oui = true;
然后我试着
import java.util.Scanner;
public class Champi {
public static void main(String[] args) {
Scanner clavier = new Scanner(System.in);
System.out.println("Pensez a un champignon : amanite tue mouches, pied bleu, girolle,");
System.out.println("cèpe de Bordeaux, coprin chevelu ou agaric jaunissant.");
boolean oui = true;
boolean Oui = true;
boolean non = false;
boolean Non = false;
System.out.print("Est-ce que votre champignon a un anneau (true : oui, false : non) ? ");
String Reponse1 = clavier.nextLine();
if (Reponse1) {
System.out.print("l'agaric jaunissant");
}
else {
System.out.print("l'amanite tue-mouches");}
当然,期望的行为是用户将在输入中输入“Yes”或“oui”(这是用法语完成的),然后IF语句将其转换为“True”或“No”转换为“False” 似乎什么都没用
谢谢你的帮助
# 1 楼答案
在java中,if语句只接受布尔类型。在您的例子中,您试图将String对象传递到if语句中。 从逻辑上看,我认为你首先要用法语解析是/否。因此,您可以通过将字符串检查传递到if语句来组合这两个过程:
比较字符串而不是
Response1
不会引发异常,即使Response1
将是null
。不过,如果你愿意,你可以换个方式但是,请注意,在比较字符串时不能使用
==
,因为它将比较对象的地址,而不是字符串本身# 2 楼答案
只需将读到的句子与你想分析的单词进行比较
# 3 楼答案
这不起作用的原因是,输入的值保存在变量
Reponse1
中。即使文本可能与变量的名称相同,它也不会成为该变量字符串的内容只是按顺序排列的字母。它们与变量的名称没有任何对应关系
可以对字符串使用
toLowerCase()
将其转换为所有小写字母,这样可以避免大小写差异。 然后,要检查一个字符串是否与另一个匹配,只需使用equals
方法