空白检测器返回错误

时间:2011-10-02 00:41:23

标签: java string methods boolean

我创建了一个基本上检测空白字符的方法。我通过一个字符串并检查每个字符的空白区域。如果它是一个空格字符,我返回true,如果不是,我返回false。但是,我收到一个编译错误,说明“缺少return语句”。由于我已经有两个返回语句“true”和“false”,我不明白为什么会出现错误。你能帮助我或指出我正确的方向吗?提前致谢。

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

3 个答案:

答案 0 :(得分:1)

想象一下,如果string.length()为0,会返回什么?

另外,请注意,这不符合您所说的,即通过字符串并检查每个字符。由于您使用i,它实际上根本没有检查字符串的任何内容。如果它正在检查字符串,它仍然只会检查字符串的第一个字符。如果该字符是空格,则立即返回true,如果不是,则立即返回false。

答案 1 :(得分:0)

您循环遍历String的长度,但尝试返回该循环内部。逻辑没有意义。

考虑一下您要解决的问题 - 是否要测试字符是否为空格,或者整个字符串是否包含至少一个空白字符?对于后者:

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(" ");

答案 2 :(得分: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
}

请注意,这适用于空白(零长度)字符串和空字符串

的边缘情况