2013-03-12 87 views
3

我正在瀏覽過去試卷上的問題清單。 其中一個問題是布爾類型。布爾測試返回false時它應該是真的?

如果名稱不是Thomas,則返回false,如果是,則返回true。

這裏是我的代碼:

public class QuestionTwo 
{ 
String name; 

public static void main(String [] args){ 

    System.out.println(nameTest("Thomas")); 
} 
public static boolean nameTest(String name){ 
    if(!name.equals("Thomas")); 
    return false; 
} 
} 

正如你可以看到我的代碼應該返回true,但它一直返回false? 有人可以告訴我我的代碼出現問題嗎? 請原諒我發現任何愚蠢的錯誤,因爲我仍在學習。 非常感謝。

回答

5

刪除分號

if(!name.equals("Thomas")) return false; 

你寫它的方式,它是兩個單獨的語句。首先,如果名字不等於托馬斯,那麼什麼都不做。其次,返回false。

+0

Ahh很感謝Zutty!=] – PrimalScientist 2013-03-12 11:00:57

+2

@PrimalScientist:請注意,Zutty已將'return false;'移至與if相同的行。這是完全不必要的**。只需刪除分號即可。大多數情況下,你可以將'return false'縮進'if'中,這樣看起來就像是從屬於它,並且經常在其周圍放置'{'和'}',如下所示:http ://pastie.org/6459258或者,當然,將它與Zutty的做法一致,有些人認爲在有限的情況下可以接受(比如這個)。 – 2013-03-12 11:03:38

+1

這是很好的反饋。點指出,並感謝你們所有! – PrimalScientist 2013-03-12 11:06:30

6

刪除分號if statement的末尾。

if(!name.equals("Thomas")) 

還不錯的做法是做equals test這樣:

if(!"Thomas".equals(name)) 

在這種情況下,如果名稱爲你不會得到NPE

+1

謝謝! =]您的反饋非常好! – PrimalScientist 2013-03-12 11:01:51

+0

這樣做的另一種方法?非常感謝你。 – PrimalScientist 2013-03-12 11:07:08

1

在if和return語句之後放置分號使它們成爲單獨的語句。 代碼應該是這樣的:

public class QuestionTwo { 
    String name; 

    public static void main(String [] args){ 
     System.out.println(nameTest("Thomas")); 
    } 

    public static boolean nameTest(String name){ 
     if(!"Thomas".eqauals(name)) { 
      return false; 
     } 
     return true; 
    } 
} 
+0

謝謝。很好的反饋。 – PrimalScientist 2013-03-12 11:08:10

+1

不客氣:)不要忘記接受你喜歡的答案或幫助解決你的問題。 – 2013-03-12 11:11:12

3

[方法]應該返回false,如果該名稱不是托馬斯,和真實的,如果它是。

你並不需要一個if可言:

public static boolean nameTest(String name){ 
    return name.equals("Thomas"); 
} 

一般來說,boolean表達式是不容易if S和他們周圍== true/== false閱讀。每當您看到從if的分支中返回truefalse時,您應該考慮在不使用if語句的情況下重寫它。

+0

在這個問題中沒有if語句,我認爲我必須把它放進去。這是我第一次看到這種類型的布爾語句。非常感謝。 – PrimalScientist 2013-03-12 11:09:03

+0

這是要記住的事情!事情是我/我們(類)總是將布爾語句與if語句關聯起來。 這可能是我們的講師可能正在尋找更進一步的方式來做到這一點? 這真的很好,你知道。謝謝。 – PrimalScientist 2013-03-12 11:14:28

+1

@PrimalScientist是的,這種事情是講師在某些時候會教你的。要記住的重要一點是'boolean'表達式也是表達式 - 它們不僅用於'if's和'while's,而且可以被分配,返回,相互比較等等。 – dasblinkenlight 2013-03-12 11:21:12

1

要做的最好的事情是確切地返回名稱是否等於托馬斯。有沒有必要做一個if語句

public static boolean nameTest(String name){ 
    return name.equals("Thomas"); 
} 

其他建議的解決方案:

if(!name.equals("Thomas")) return false; 

將無法​​編譯,因爲如果沒有返回值的名稱不是托馬斯。

+0

非常感謝。它真的很有幫助。 – PrimalScientist 2013-03-12 11:11:46

相關問題