【问题标题】:How to use a returned boolean value from a method?如何使用方法返回的布尔值?
【发布时间】:2014-11-23 14:12:26
【问题描述】:

不确定我的措辞是否正确,但是我试图从用户那里获取输入,然后检查答案是否为“是”,如果是,我希望它返回“真”,然后使用这个在我的主要方法中。

[Main Method]
String inputFromUser = JOptionPane.showInputDialog(null, "Yes/No?");

checkBoolean(inputFromUser);

if(inputFromUser = true) {
System.out.println("Yes, true!"); }

else if(inputFromUser = false) {
System.out.println("No, false!"); }

public static boolean checkBoolean(String inputFromUser) {

boolean returnValue;

if(inputFromUser.equals("yes")) {
returnValue = true; }

else {
returnValue = false; }
}
return returnValue;
}

使用此代码,我在执行 inputFromUser = true 的主要方法中得到不兼容的类型。必需的字符串,但接收布尔值。

error: incompatible types. if(inputFromUser = true) { required: String found: boolean

我怎样才能准确地完成这项工作?这个网站上可能已经有答案了,但我不知道如何准确地表达这个问题。

【问题讨论】:

  • inputFromUser 是 String 类型,true 是 boolean,if(inputFromUser = true),您是否尝试将 true 值分配给String?

标签: java methods boolean joptionpane


【解决方案1】:

改变

checkBoolean(inputFromUser);

if(inputFromUser = true) {
System.out.println("Yes, true!"); }

else if(inputFromUser = false) {
System.out.println("No, false!"); }

到

if(checkBoolean(inputFromUser))  //This is same as if(checkBoolean(inputFromUser)==true)
System.out.println("Yes, true!"); 
else
System.out.println("No, false!");

在您当前的代码中,您尝试将String 分配给boolean,这是没有意义的。我认为你的意思是== 在那里你想比较它们。但即使你改变它,当你将String 与boolean 值进行比较时也是错误的。另一种方法是将方法的返回值存储在boolean 变量中,并在if 中使用它。下面的代码就是这样做的:

boolean check = checkBoolean(inputFromUser);

if(check)  //This is same as if(check==true)
System.out.println("Yes, true!"); 
else
System.out.println("No, false!");

另外,您的 checkBoolean 方法可以缩短为一行使用

return inputFromUser.equals("yes");

【讨论】:

    【解决方案2】:

    首先,inputFromUser = true 是一个赋值语句,将值 true 赋给变量 inputFromUser。检查应该改用==,即假设inputFromUser是布尔类型,它应该是inputFromUser == true(知道在这种情况下你可以简单地使用if(inputFromUser))。

    但是,在您的情况下,inputFromUser 的类型为 String,这是编译错误的原因。您应该将checkBoolean 的返回值分配给一个变量并使用它而不是inputFromUser:

    boolean answer = checkBoolean(inputFromUser);
    if(answer) {
       System.out.println("Yes, true!");
    } else {
       System.out.println("No, false!");
    }
    

    或者您可以跳过使用checkBoolean 并继续:

    if(inputFromUser.equals("yes")) {
       System.out.println("Yes, true!");
    } else {
       System.out.println("No, false!");
    }
    

    【讨论】:

      【解决方案3】:

      布尔值是与字符串不同的数据类型。它不仅仅是一个包含“True”或“False”的字符串。无需将布尔字符串分配给 returnValue 变量,只需返回 true 或 false 并从末尾删除 return 语句。这样你将只处理布尔值而不是字符串

      【讨论】:

        【解决方案4】:

        那是因为inputFromUser 变量的类型是字符串,而您将它与布尔值进行比较。

        您可以执行以下操作:

        boolean doContinue = checkBoolean(inputFromUser);
        if (doContinue) {//intead of if(inputFromUser = true) {
             System.out.println("Yes, true!");
        }
        

        同样,您可以更改其他条件。请记住,即使您的 inputFromUser 本来是一个布尔值,您也需要将它与 "==" 与 true 进行比较,而不是 "="

        【讨论】:

          【解决方案5】:

          查看代码的第一行。

          您使用的数据类型是字符串,但您正在向用户请求布尔数据类型。

          继续将 String 更改为 Boolean 并重新编译您的程序

          【讨论】:

            猜你喜欢
            • 2011-11-28
            • 2016-01-25
            • 1970-01-01
            • 2012-11-03
            • 1970-01-01
            • 2015-09-10
            • 2012-11-04
            • 2015-06-18
            相关资源
            最近更新 更多