2013-04-06 126 views
0

我正在嘗試這段代碼寫作練習,我很失落!用布爾值比較兩個字符串?

的鍛鍊是:

完成這需要兩個字符串和一個布爾作爲輸入的方法。如果布爾值爲true,則此方法比較前兩個字符串,忽略大小寫(大寫/小寫)。如果兩個字符串的長度相同,則兩個字符串被忽略大小寫相等,並且兩個字符串中的相應字符忽略大小寫。

如果布爾是假的,這種方法應該比較兩個字符串,如果第一個字符串表示的字符作爲第二個字符串的相同順序返回true,否則爲false。

注:compareTwoStrings("HELLO", "", false)應該返回false。

這裏是我的嘗試:

public boolean compareTwoStrings (String a, String b, boolean isIgnoreCase) 
{ 
    if (a.equalsIgnoreCase(b)) { 
     return (isIgnoreCase==true); 
    } 
    else if (a.equals(b)) { 
     return (isIgnoreCase==false); 
    } 
} 

它甚至不進行編譯,但即使這樣做,我敢肯定,這是行不通的。

+0

你應該檢查布爾和,然後再進行恢復適當的方法的結果,你反了它。此外,布爾是這樣檢查,如果(myBoolean)做某事,其他做別的 – 2013-04-06 16:11:13

回答

5

你正在倒退。主題說:如果布爾值爲真,那麼做,否則,那麼做。所以你應該用相同的方式編程它:

if (isIgnoreCase) { 
    return ... 
} 
else { 
    return ... 
} 

其餘的是作爲一個練習。你應該可以自己弄清楚。

+0

它工作耶!歡呼:) – Kimmm 2013-04-06 16:16:41

2

我認爲要求的解決方案是下面的方法:

public boolean compareTwoStrings(String a, String b, boolean isIgnoreCase) 
{ 
    if (isIgnoreCase) 
    { 
     return a.equalsIgnoreCase(b); 
    } 

    return a.equals(b); 
} 

你的方法DAS不能編譯,因爲Java編譯器假設是溫特某些情況下,如果兩個條件演算值爲false。因爲編譯器無法確保至少有一個return語句可到達。

0

我認爲這就是你要找的。

public static void myMethod(String str, String str2, boolean bool) { 

    if (bool) { 
     str = str.toLowerCase(); 
     str2 = str2.toLowerCase(); 
     if (str.equals(str2)) 
      System.out.println("strings equal"); 
    } 
    else { 
     System.out.println("false condition"); 
    } 
} 
0

這可能是你的問題的解決方案:

public boolean compareTwoStrings (String a, String b, boolean isIgnoreCase){ 
    if (isIgnoreCase) 
    return (a.toLowerCase()).equals(b.toLowerCase());   
    else 
    return a.equals(b);  
}