使用递归错误。线程“主”中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0

时间:2019-12-05 16:29:43

标签: java string recursion exception runtime-error

我要编写的程序将使用递归计算给定字符串中“ A”的数量。它应该做的是计算程序自身递归的次数。该程序可以正确编译,但是在运行时会出现此错误

class hw10

{

public static void main(String[] args)
{
    System.out.println(f(""))
    System.out.println(f("A"));
    System.out.println(f("B"));
    System.out.println(f("BCA"));
    System.out.println(f("ABC"));
    System.out.println(f("ABACAD"));

}

public static int f(String s)
{

    if(s.length() <= 0)
    {
        if(s.charAt(0) == 'A')
        {
            return 1;
        }
        else
        {
            return 0;
        }


    }
    else
    {
        if(s.charAt(0) == 'A')
        {
            return 1 + f(s.substring(1));
        }
        else
        {
            return f(s.substring(1));
        }
    }

}

}

这是完整的消息 线程“主”中的异常java.lang.StringIndexOutOfBoundsException:字符串索引超出范围:0         在java.base / java.lang.StringLatin1.charAt(StringLatin1.java:47)         在java.base / java.lang.String.charAt(String.java:702)         在hw10.f(hw10.java:20)         在hw10.f(hw10.java:35)         在hw10.main(hw10.java:7)

1 个答案:

答案 0 :(得分:0)

递归导致短代码 试试这个:

        public static int f(String s) {
          if(s.length() == 0) return 0;
          if(s.charAt(0) == 'A') return (1 + f(s.substring(1)));
          return f(s.substring(1));
    }