gpt4 book ai didi

java - Search() StringIndexOutOfBoundsException

转载 作者:太空宇宙 更新时间:2023-11-04 11:31:25 26 4
gpt4 key购买 nike

有人要求我创建一个名为 search 的静态递归方法,该方法在字符串中搜索字符,如果找到则打印其位置,如果没有找到则返回 -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

编辑:如果我输入字符串中存在的字符(例如 animal 中的 n),它会起作用,但如果我输入 o 并且字符串是 animal ,则会出现错误。

编辑2:我通过删除标志并从最后一个字符遍历字符串来使其工作,谢谢大家! :D

最佳答案

我猜第一个索引越界将发生在 else block s.substring(1)...

例如:s="a", c="b"

  1. flag=true
  2. if (flag == false && s.length() == 0) this will fail and go to else block
  3. in else block, if (s.charAt(0) == c) , here "a"=="c" fails go to else block
  4. in the inner else block, you have return 1 + search(s.substring(1) , c); this line will look for the String index position 1, which is not available and throws stringindexoutofboundsexception

关于java - Search() StringIndexOutOfBoundsException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43733984/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com