У меня проблемы с поиском ошибки в моем коде поиска строки в Java? - PullRequest
0 голосов
/ 24 марта 2019

Я работаю над собственной версией String, и один из методов объекта должен быть в состоянии взять обычную строку и найти ее.Класс называется MyString и имеет две переменные-члены: длину строки, которую он содержит, и массив строки.Полный класс приведен ниже с методом, у меня возникают проблемы с последним отключением.

Единственный раз, когда метод indexOf не работает, это когда строка содержится в конце массива MyString,Я возвращаю -1 вместо индекса, где он должен быть найден.

Тестовые случаи: Инициализируйте MyString строкой "Trastamara".Если я найду слова «mara», «amara» или даже «Trastamara», которые заканчиваются последним символом строки, строка не будет найдена.

public class MyString {
private int length;
private char[] characters;

public MyString()
{
    length = 0;
}

public MyString(String s)
{
    length = s.length();
    characters = new char[length];
    for(int i = 0; i <length; i++)
    {
        characters[i] = s.charAt(i);
    }

}

public int indexOf(String s)
{
    char[] sa = s.toCharArray();
    int lastIndex = length - s.length();
    int convoluted=0;
    for(int i=1; i<=lastIndex;i++)
    {
        if(convoluted==s.length())
        {
            return i-1;
        } else convoluted=0;
        for(int j=0, k=i; j<s.length(); j++, k++)
        {
            if(sa[j]==characters[k])
            {
                convoluted++;
            }
        }
    }
    return -1;
}
...