我正在做一些Java练习,但我不知道为什么答案不是这个。

 for (int i=0;i<str.length()-2;i++)  {
    if ((str.charAt(i)=='b') && (str.charAt(i+2)=='b')) {
    return true; }
    else return false;
    }
 return false;


该问题要求如果给定的字符串(str)中包含“ bob”,则返回true,除了中间字符不需要为“ o”。上面的代码为字符串三个字符返回true
满足条件的长度,例如“ bob”或“ bbb”,但对于比“ bobdfgkabcb”长的字符串为假。我花了整整一天的时间来尝试解决这个问题以及另一个类似的问题,所以我很高兴被告知为什么它是错误的。

谢谢。

最佳答案

将您的代码更改为:

for (int i=0;i<str.length()-2;i++)  {
    if ((str.charAt(i)=='b') && (str.charAt(i+2)=='b')) {// check 1st and 3rd character, 2nd and 4th character etc
    return true; }
    }
 return false;


或者您可以尝试这样的正则表达式:str.matches(".*b[a-zA-Z]b.*")

关于java - 查找字符串中是否有两个特定字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26116017/

10-10 21:49
查看更多