StringIndexOutOfBoundsException

StringIndexOutOfBoundsException

我被问到要创建一个静态的递归方法,称为搜索,该方法搜索字符串中的字符,如果发现它会打印出它的位置,否则返回-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/

10-10 19:19