2014-11-23 82 views
0

不知道我是否正確的措辭,但我試圖從用戶得到一個輸入,然後檢查答案是'是',如果它是我想它返回'真',然後使用它在我的主要方法。如何使用方法返回的布爾值?

[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

我怎樣才能使這項工作到底是什麼?這個網站上可能有答案,但我不知道如何正確地提出問題。

+0

** ** inputFromUser是'String'類型和** **真的是'boolean','如果(inputFromUser =真)',是你想把'true'值賦給'String'? – 2014-11-23 14:16:55

回答

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的值進行比較也是錯誤的。另一種方式是t時的方法的返回值保存在變量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

這是因爲inputFromUser變量的類型爲String,並且您將其與布爾值進行比較。

你可以做到以下幾點:

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

而且同樣你可以改變你的其他條件。請記住,即使你inputFromUser的意思是,你需要將它與比較「==」與真正的而不是「=」

1

首先,inputFromUser = true是該值true賦予變量inputFromUser賦值語句。支票應該使用==來代替,即假設inputFromUser是boolean類型的,它應該是inputFromUser == true(知道在這種情況下可以簡單地使用if(inputFromUser))。

但是,在你的情況下,inputFromUserString類型,這是編譯錯誤的原因。您應該的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!"); 
} 
1

布爾是一個不同的數據類型爲串。它不僅僅是一個包含'True'或'False'的字符串。而不是分配一個布爾型字符串給returnValue變量,只需返回true或false,並從結尾刪除return語句。這樣你只會處理布爾值而不是字符串

0

看看你的代碼的第一行。

您使用的數據類型是字符串,但是您正在向用戶請求布爾數據類型。

來吧,改變字符串布爾並重新編譯程序