Java 如何检查字符串中是否存在特定字符?

Java 如何检查字符串中是否存在特定字符?,java,string,stringindexoutofbounds,Java,String,Stringindexoutofbounds,我写了下面的代码,在下面的字符串中查找关键字co_e,其中\u表示任何其他字符 如果我将字符串更改为“aaacodebb”或“codexxcode” 但是如果我将其更改为“xxcozeyycop”它将抛出StringIndexOutOfBoundsException public int countCode(String str) { int count = 0; String result = ""; boolean yes = true; for (int i

我写了下面的代码,在下面的字符串中查找关键字
co_e
,其中
\u
表示任何其他字符

如果我将字符串更改为
“aaacodebb”
“codexxcode”
但是如果我将其更改为
“xxcozeyycop”
它将抛出
StringIndexOutOfBoundsException

public int countCode(String str) {
    int count = 0;
    String result = "";
    boolean yes = true;
    for (int i = 0; i < str.length(); i++) {
        // yes = str.charAt(i+3);
        if (str.length() >= 3) {
            if (str.charAt(i) == 'c' && str.charAt(i + 1) == 'o' && str.charAt(i + 3) == 'e')
                count++;
        }
    }
    return (count);
}
public int countCode(String str){
整数计数=0;
字符串结果=”;
布尔值是=真;
对于(int i=0;i=3){
如果(str.charAt(i)='c'&&str.charAt(i+1)='o'&&str.charAt(i+3)='e')
计数++;
}
}
返回(计数);
}

在循环中,您正在检查访问i+3。因此,当
i
位于最后4位时,您必须停止

if(str.length()>=3)
替换为
if(str.length()>=3&&str.length()-i>3)

您可以将以下内容作为for循环的第一个条件:

if(str.length() - i <=3){
    break;
}

if(str.length()-i您的越界错误发生在此行中:

if (str.charAt(i) == 'c' && str.charAt(i + 1) == 'o' && str.charAt(i + 3) == 'e')
对于
str=“xxcozeyycop”
,错误发生在
str.charAt(8)
,因为
str.length()
是11,而
str.charAt(11)
显然是越界的(所有
str.charAt(str.length())

这里有一个可能的解决方案。请注意,如果
str.length()<4
,for循环将无法运行,因为
i+3
将始终超出范围。此外,对于所有长度超过四个字符的字符串,
i==str.length()-4
时,
i+3
将等于字符串的最后一个索引
str.length()-1

for (int i = 0; i < str.length() - 3; i++) {
    char c1 = str.charAt(i);
    char c2 = str.charAt(i + 1);
    char c4 = str.charAt(i + 3);

    if (c1 == 'c' && c2 == 'o' && c4 == 'e')
        count++;
}
for(int i=0;i
否,我想计算字母c、o、任意字母和e的计数,如cope coze,核心第三个字符可以是除1=c以外的任何字符,2=o、3=可以是任何字符4=e循环直到str.length()为止.上一次迭代时i的值是多少?因此i+1或i+3的值是多少?使用您的逻辑和算术技能。什么是StringIndexOutOfBoundsException?使用您的阅读技能。
co_e
是否表示
co
(任何字符串)
e
?你知道正则表达式吗?这是显示字符串中是否存在特定字符或特定字符模式的另一种方法。在本例中,正则表达式是
co.e
,其中句点是表示任何字符的元字符。你的第一句话是对的。为什么不停止循环,而不是继续迭代,并使用i循环中的f块?检查循环中的字符串长度有什么意义?字符串长度在每次迭代中都会变化吗?检查字符串长度是否有用?如果有人在循环中否决了某人,这真的很重要吗?是的。OP正在与基本循环作斗争。你教他如何使用它们。好的方面是
对于(int i=0 i
.Not
对于(int i=0;i=limit)break;}
。否决票表明答案没有回答问题/回答错误。如果不是这样&有人仍然在没有任何正当理由的情况下否决,那么它会在许多问题上提出问题。改进答案而不是抱怨如何?