2011-10-02 90 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 
} 

注意这迎合空白(零长度)串的边缘的情况下和一个空字符串