java - 字符串索引越界错误

标签 java string recursion indexoutofboundsexception

以下代码试图给定一个字符串,递归地(无循环)计算字符串中小写“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/

相关文章:

java - Windows 与 Java 中 Unix 的文件路径问题

java - 渲染 ImageButtons 时出现 OutOfMemoryError

java - Java如何从逗号分隔的String中获取元素

用于字符串修改的 Python 代码无法正常工作

python - (Python)得到最大的递归错误,在这种情况下我应该尝试其他方法还是重写它?

java - 为什么这两个来源计算出不同的 sha-1 和

java - 像 read() 这样的 I/O 方法如何在 Java 中将线程置于阻塞状态?

python - 试图找到一种方法来过滤掉Python字符串的某些部分

java - boolean 递归中的 "unreachable statement"

recursion - 递归绘图