有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

无法将转换为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” 似乎什么都没用

谢谢你的帮助


共 (3) 个答案

  1. # 1 楼答案

    在java中,if语句只接受布尔类型。在您的例子中,您试图将String对象传递到if语句中。 从逻辑上看,我认为你首先要用法语解析是/否。因此,您可以通过将字符串检查传递到if语句来组合这两个过程:

    String Reponse1 = clavier.nextLine();
    if("oui".equals(Response1.toLowerCase()) || "yes".equals(Response1.toLowerCase())) {
        //positive answer
    } else {
    //negative
    }
    

    比较字符串而不是Response1不会引发异常,即使Response1将是null。不过,如果你愿意,你可以换个方式

    if(Response1.toLowerCase().equals("oui") Response1.toLowerCase().equals("yes")) {
        //positive answer
    } else {
    //negative
    }
    

    但是,请注意,在比较字符串时不能使用==,因为它将比较对象的地址,而不是字符串本身

  2. # 2 楼答案

    只需将读到的句子与你想分析的单词进行比较

     if(Response1.toLowerCase().equals("oui") || Response1.toLowerCase().equals("yes")){
           //Statements when true...
    
     }else{
          // Statements when false...
    }
    
  3. # 3 楼答案

    这不起作用的原因是,输入的值保存在变量Reponse1中。即使文本可能与变量的名称相同,它也不会成为该变量

    字符串的内容只是按顺序排列的字母。它们与变量的名称没有任何对应关系

    可以对字符串使用toLowerCase()将其转换为所有小写字母,这样可以避免大小写差异。 然后,要检查一个字符串是否与另一个匹配,只需使用equals方法

    String Reponse1 = clavier.nextLine();
    Reponse1 = Reponse1.toLowerCase();
    if(Reponse1.equals("oui") || Reponse1.equals("yes")) {