以下代码试图给定一个字符串,递归地(无循环)计算字符串中小写“x”字符的数量。
代码有这个错误: 线程“main”中的异常 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()));
}
}
最佳答案
只需添加
if (str.length() <= 0) return 0;
在 countX(...) 开始
异常抛出在
if(str.charAt(0) != 'x')
当str为""
顺便说一句。在为每个字符检查创建新字符串时,代码并不完全有效。像这样的递归函数也会在输入足够长时抛出 StackOverflowError。
看看这个: Java: How do I count the number of occurrences of a char in a String?
关于java - 字符串索引越界错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7861500/