我创建了一个基本上检测空白字符的方法。我通过一个字符串并检查每个字符的空白区域。如果它是一个空格字符,我返回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;
}
}
}
答案 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
}
请注意,这适用于空白(零长度)字符串和空字符串
的边缘情况