【发布时间】:2011-12-13 06:34:18
【问题描述】:
下面的代码尝试给定一个字符串,递归地(不循环)计算字符串中小写“x”字符的数量。
代码有这个错误: 线程“主”java.lang.StringIndexOutOfBoundsException 中的异常:字符串索引超出范围:0
这段代码的主要方法是:
public static void main(String [] args)
{
System.out.println(countX("hx1x"));
}
实际代码是:
public static int countX(String str)
{
if(str.charAt(0) != 'x')
{
if(str.indexOf('x') >= 1)
{
return countX(str.substring(1, str.length()));
}
else
{
return 0;
}
}
else
{
return 1 + countX(str.substring(1, str.length()));
}
}
【问题讨论】:
-
使用 println 语句来调试你的代码。他们会告诉你你做错了什么。
-
这就是半脑递归所发生的事情......以一个空字符串结束,调试器是一个可爱的工具,顺便说一句
标签: java string recursion indexoutofboundsexception