我需要这个方法做的就是获取一个字符串,比如“aaxbb”
,它将返回true
,因为有一个“aa”和一个“bb” ,
如果给定的字符串是 length = 0
或 length = 1
它应该失败。
我遇到的问题是我不知道的..我知道在我的终端中,在 hasAdjacentPair 的第一个测试用例通过后,我得到一个闪烁的光标,这意味着在这个方法中我没有踢出一个我的循环,让它继续检查字符串是否有更多相邻对
第一个测试用例通过,但它是一个空字符串“” = 因为它返回了 false
第二个测试用例通过,而其“a”=,因为它返回 false
我们也不允许使用数组:(
public boolean hasAdjacentPair(String str)
{
boolean result = false;
if (str.length() == 0)
{
result = false;
}
if (str.length() == 1)
{
result = false;
}
while (str.length() != 0)
{
for (int i = 0; i < str.length() - 1; ++i)
{
char adjChar = str.charAt(i);
char nextAdjChar = str.charAt(i + 1);
if (adjChar == nextAdjChar)
{
result = true;
}
}
}
return result;
}
将我的 while 循环 while (str.length() != 0)
更改为 while (str.length() != 0 && str.length() != 1)
这使得测试 2 能够工作
编辑2:在我完全取出while (str.length() != 0)
之后,我的所有5个测试用例都通过了:)所以我猜就是这样?
最佳答案
while (str.length() != 0)
始终为真,并且循环永远不会结束。使用字符串长度开关或 if-else 代替 if..if..while 结构。
你可以尝试这样的事情
if (str.length() == 0)
{
result = false;
}
else if (str.length() == 1)
{
result = false;
}
else
{
for (int i = 0; i < str.length() - 1; ++i)
{
char adjChar = str.charAt(i);
char nextAdjChar = str.charAt(i + 1);
if (adjChar == nextAdjChar)
{
result = true;
break;
}
}
如果您检查至少一对,请使用break语句,因为您已经知道得到了结果
关于java - 为什么这会变成无限循环?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28733743/