我被问到要创建一个静态的递归方法,称为搜索,该方法搜索字符串中的字符,如果发现它会打印出它的位置,否则返回-1
这是我的代码
public static int search(String s , char c)
{
boolean flag = true;
if (flag == false && s.length() == 0)
return -(s.length() + 1);
else
if (s.charAt(0) == c)
{
return 1;
}
else
{
flag = false;
return 1 + search(s.substring(1) , c);
}
我正在使用一个标志来查看所有字符串后是否找不到它,它将预先执行所有字符串的长度减去字符串的长度-1,
但是我总是以“ StringIndexOutOfBoundsException”错误结束。该错误到底在哪里?提前致谢! :D
编辑:如果我输入的字符串中存在像动物中的n这样的字符,它会起作用,但是如果我输入o并且字符串是animal,它将给我错误。
编辑2:我通过删除标志并从最后一个字符开始遍历字符串来使其工作,谢谢大家! :D
最佳答案
我猜第一个超出范围的索引将发生在else块s.substring(1)...
例如:s="a", c="b"
flag=true
如果(flag == false && s.length() == 0)
这将失败并转到else块
在else块if (s.charAt(0) == c)
中,此处“ a” ==“ c”失败,请转到else块
在内部else块中,您具有return 1 + search(s.substring(1) , c);
该行将查找String索引
位置1,该位置不可用并抛出
stringindexoutofboundsexception
关于java - Search()StringIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43733984/