递归查找字符串中某个字符的出现次数(java)

递归查找字符串中某个字符的出现次数(java),java,string,recursion,Java,String,Recursion,我试图编写一个方法,返回字符串的第一个字符在整个字符串中出现的次数。这就是我到目前为止所做的 public int numberOfFirstChar0(String str) { char ch = str.charAt(0); if (str.equals("")) { return 0; } if ((str.substring(0, 1).equals(ch))) { return 1 + numberOfFirstCha

我试图编写一个方法,返回字符串的第一个字符在整个字符串中出现的次数。这就是我到目前为止所做的

public int numberOfFirstChar0(String str) {
    char ch = str.charAt(0);
    if (str.equals("")) {
        return 0;
    }

    if ((str.substring(0, 1).equals(ch))) {
        return 1 + numberOfFirstChar0(str.substring(1));
    }

    return numberOfFirstChar0(str);
}

但是,它似乎不起作用,因为它不会返回字符串中出现次数的正确结果。代码有什么问题吗?非常感谢您的帮助。

以下是一个简单的示例,说明您在寻找什么

密码
这使用了两个函数,一个是递归函数。我们只从字符串中获取第一个索引处的字符和字符数组一次,而不是反复执行并连接字符串。然后,我们使用递归继续遍历字符数组的索引

我不知道你为什么要这么做。一个简单的for循环将以更容易的方式实现这一点

私有静态int numberOfFirstChar0String str{ 如果str.isEmpty{ 返回0; } char[]characters=str.toCharArray; 字符=字符[0]; 返回发生率记分符,字符,0,0; } 私有静态int-occurrenceschar[]字符,字符,int索引,int-occurrences{ 如果索引>=characters.length-1{ 返回事件; } 如果字符[索引]==字符{ 事件++; } 返回发生率记分符、字符、++索引、发生率; } Java8解决方案

第一个字符串输入的私有静态长时间发生{ 如果input.isEmpty{ 返回0; } characterAtIndexZero=input.charAt0; 返回input.chars .filtercharacter->character==characterAtIndexZero 计数 }
    public static void main(String args[]) {
    //the string we will use to count the occurence of the first character
    String countMe = "abcaabbbdc";
    //the counter used
    int charCount=0;

    for(int i = 0;i<countMe.length();i++) {
        if(countMe.charAt(i)==countMe.charAt(0)) {
            //add to counter
            charCount++;
        }
    }
    //print results
    System.out.println("The character '"+countMe.charAt(0)+"' appears "+ charCount+ " times");
}
The character 'a' appears 3 times