我目前正在为一个类创建一个 TextLine 类的项目,该类表示必须表示为字符数组的一行文本。我不允许以任何方式间接或直接使用字符串类来表示 TextLine 对象,但是,我可以使用它来处理参数。
对于其中一种方法,我应该将一个字符串作为参数的参数,它也是TextLine对象的一个片段,然后返回该片段在这个TextLine中第一次出现的索引位置,或者- 1,如果没有找到片段。
现在,我正在尝试找出 indexOf 方法,但我的问题是我的方法只检查一次起点。因此,如果 TextLine 对象的字母第一次与片段的字母不匹配,但在对象的其他位置有另一个匹配项,则该方法不会检查该起点。
例如,假设我输入 penplay 作为 TextLine,然后输入 play 作为片段。显然,TextLine 中出现了 play,但是我的 indexOf 方法所做的是,它检查 penplay 中索引 0 处的第一个 p,然后继续查看以下字母是否与 play 长度匹配,如果它没有,它返回-1。知道如何让算法继续寻找另一个起点吗?
这就是我的代码:
public int indexOf(String fragment){
char[] temp = fragment.toCharArray();
int j = 0;
for(int i = 0; i < someText.length; i++){
while(someText[i] == temp[j]){
for(j = 1; j < temp.length; j++){
if(temp[j] != someText[i+j]){
return -1;
}
}
return i;
}
}
return -1;
}