Java 统计字符串中子字符串的出现次数

Java 统计字符串中子字符串的出现次数,java,string,substring,Java,String,Substring,我正在努力找出代码中的错误在哪里 这是我的测试: @Test public void testCountOccurences() { assertEquals(1, sc1.countOccurences("ence")); assertEquals(2, sc1.countOccurences("en")); assertEquals(1, sc2.countOccurences("that")); assertEquals(0, sc2.countOccure

我正在努力找出代码中的错误在哪里

这是我的测试:

@Test
public void testCountOccurences()
{
    assertEquals(1, sc1.countOccurences("ence"));
    assertEquals(2, sc1.countOccurences("en"));
    assertEquals(1, sc2.countOccurences("that"));
    assertEquals(0, sc2.countOccurences("This"));
}
以下是我的方法:

public int countOccurences(String t) 
{
    int j = 0;
    int i;
    for(i = 0; i < sentence.length(); i++)
    {
         String subString = sentence.substring(i, i + t.length());
         if(subString.equals(t))
            {
                j++;
            }
    }
    return j;
}
public int countoccurrences(字符串t)
{
int j=0;
int i;
对于(i=0;i<句子长度();i++)
{
字符串子字符串=句子.subString(i,i+t.length());
if(子串等于(t))
{
j++;
}
}
返回j;
}

我假设您这样做是为了练习

看来你已经偏离了原来的底线


试着将(i=0;i更改为(i=0;i我假设您这样做是为了练习

看来你已经偏离了原来的底线


尝试将(i=0;i更改为(i=0;i我打赌你的问题是i+t.length()。当“i”接近句子长度时,i+t.length将比句子长度长,您将得到一个错误。

我打赌您的问题是i+t.length()。当“i”接近句子长度时,i+t.length将比句子长度长,您将得到一个错误。

您可以使用
String.indexOf()

public int countOccurrences(final String t)
{
    if (t == null || t.isEmpty())
        return 0;
    int index, startIndex = 0;
    int len = t.length();
    int ret = 0;

    while (true) {
        index = sentence.indexOf(t, startIndex);
        if (index == -1)
            break;
        startIndex = index + len;
        ret++;
    }

    return ret;
}

您可以使用
String.indexOf()
进行以下操作:

public int countOccurrences(final String t)
{
    if (t == null || t.isEmpty())
        return 0;
    int index, startIndex = 0;
    int len = t.length();
    int ret = 0;

    while (true) {
        index = sentence.indexOf(t, startIndex);
        if (index == -1)
            break;
        startIndex = index + len;
        ret++;
    }

    return ret;
}

将您的测试值包含在“句子”中会更容易帮助您。在
aaa
中存在多少次
aa
?将您的测试值包含在“句子”中会更容易帮助您。在
aaa
中存在多少次
aa