我试图编写的程序将使用递归来计算给定字符串中“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));
}
}
}
}
这是完整的消息 线程“main”中的异常 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)
最佳答案
递归导致代码短 试试这个:
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));
}
关于java - 使用递归错误。线程中的异常 "main"java.lang.StringIndexOutOfBoundsException : String index out of range: 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59199481/