如何使用方法返回的布尔值?

时间:2014-11-23 14:12:27

标签: java methods boolean joptionpane

我不确定我是否正确写了这句话但是我试图从用户那里得到一个输入,然后检查答案是否是“是”,如果是,我希望它返回' true',然后在我的主要方法中使用它。

[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;
}

使用这段代码,我在main方法中得到了不兼容的类型,我在做inputFromUser = true。必需的字符串但接收布尔值。

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

我怎样才能完成这项工作?可能已经在这个网站上找到答案,但我不知道如何准确地说出这个问题。

5 个答案:

答案 0 :(得分:2)

更改

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,这没有任何意义。我认为你的意思是==,因为你想要比较它们。但即使你改变了它,你将Stringboolean值进行比较也是错误的。另一种方法是将方法的返回值存储在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");

答案 1 :(得分:1)

那是因为inputFromUser变量是String类型,你将它与布尔值进行比较。

您可以执行以下操作:

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

同样地,你可以改变你的其他条件。请记住,即使您的inputFromUser是布尔值,您也需要将其与" =="进行比较。用true而不是" ="

答案 2 :(得分:1)

首先,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 :(得分:1)

Boolean是字符串的不同数据类型。它不仅仅是一个包含' True'或者'错误'。而不是将一个布尔字符串赋给returnValue变量,只返回true或false并从结尾删除return语句。这样你只会处理布尔值而不是字符串

答案 4 :(得分:0)

查看代码的第一行。

您使用的数据类型是String,但您要求用户使用布尔数据类型。

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