2011-10-02 88 views
0

我創建了一個基本上檢測空白字符的方法。我瀏覽一個字符串並檢查每個字符的空格。如果它是空白字符,我會返回true,如果不是,則返回false。但是,我收到編譯錯誤,指出「缺少返回語句」。由於我已經有兩個返回語句「真」和「假」,我不明白爲什麼會有錯誤。你能幫我解決問題嗎?或者指引我走向正確的方向?提前致謝。空白探測器返回錯誤

public boolean isWhitespace() 
{ 
    for (int i=0; i<string.length(); i++) 
    { 
     if (Character.isWhitespace(i)) 
     { 
      return true; 
     } 
     else 
     { 
      return false; 
     } 
    } 
} 
+0

這功課?這感覺就像功課。如果是這樣,請添加「作業」標籤。 –

回答

0

您正在循環該字符串的長度,但試圖在該循環內返回。邏輯沒有意義。

想想你正試圖解決的問題 - 你想測試一個字符是否是空格,或者如果整個字符串至少包含一個空格字符?對於後者:

boolean hasWhite = false; 
for(int i=0; i < string.length(); i++) 
{ 
    if(Character.isWhitespace(string.charAt(i))) 
    { 
    hasWhite = true; 
    break; 
    } 
} 

return hasWhite; 

編輯:一個更簡單的方法,如果你進入的是八九不離十的事情;-) -

return string.contains(" "); 
+0

或更短:return string.contains(「」); – Pedro

+0

非常真實......我已經成爲猴子陷阱的受害者(http://www.urbandictionary.com/define.php?term=monkey%20trap)。我也會添加一個... –

+0

return string.contains(「」); < - 這很簡單,但忽略了:) –

1

想象一下,如果string.length()是0.什麼會返回?

此外,請注意,這不會做你說的,這是通過一個字符串,並檢查每個字符。它實際上並沒有檢查任何關於字符串的東西,因爲你使用了i。如果它正在檢查字符串,它仍然只會檢查字符串的第一個字符。如果該字符是空格,則立即返回true,否則立即返回false。

0

這裏是你的代碼應該樣子:

public boolean isWhitespace(String string) { // NOTE: Passing in string 
    if (string == null) { // NOTE: Null checking 
     return true; // You may consider null to be not whitespace - up to you 
    } 

    for (int i=0; i < string.length(); i++) { 
     if (!Character.isWhitespace(string.charAt(i))) { // NOTE: Checking char number i 
      return false; // NOTE: Return false at the first non-whitespace char found 
     } 
    } 

    return true; // NOTE: Final "default" return when no non-whitespace found 
} 

注意這迎合空白(零長度)串的邊緣的情況下和一個空字符串