在Java中使用递归方法计算字符串中的特定字符

在Java中使用递归方法计算字符串中的特定字符,java,string,recursion,methods,character,Java,String,Recursion,Methods,Character,我的家庭作业是制作一个递归方法来计算给定字符串中给定字母的出现次数。以下是我目前的代码: import java.util.Scanner; public class Exercise18_10 { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.print("Enter a string: "); String str = s

我的家庭作业是制作一个递归方法来计算给定字符串中给定字母的出现次数。以下是我目前的代码:

import java.util.Scanner;
public class Exercise18_10 {
    public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);    
    System.out.print("Enter a string: ");
    String str = sc.next();
    System.out.print("Enter a character: ");
    String letter = sc.next();
    char a = letter.charAt(0);
    System.out.println("The count of " + a + " is: " + count(str, a));

    }
    public static int count(String str, char a) {
        int count = str.indexOf(a);
        return count;
    }
}

count
中,我使用
indexOf
查找所需字母的第一个匹配项,但我不确定之后要做什么。

您的
count
变量是字符串中第一个匹配项的位置。相反,你需要像

public static int count(String str, char a) {
    int exist = str.indexOf(a);
    if ( <a doesn't exist in str*> )
        return 0;
    else {   /* recur on the rest of the string; add 1 */
        rest = str.substr(exist+1, <end of string>)
        return count(rest, a) + 1
    }
}
公共静态整数计数(字符串str,字符a){
int exist=str.indexOf(a);

if(如您所述,'count'函数当前返回输入字母第一次出现的索引。递归计算出现次数的想法意味着您需要在前进时将字符串分解为越来越小的部分


首先,您查看整个字符串,然后仅查看当前字符串的子字符串,从下一次出现开始,依此类推。要在此处实现递归,您可能需要创建一个方法,该方法可以重复调用自身(如Inception!),并在完成后立即中断基本条件(即,到达字符串的结尾或在您留下的字符串的任何部分中都找不到该字符的更多出现-->indexOf(…)==-1)

您知道什么是
indexOf(…)
是吗?是的,它会找到指定字符的第一个匹配项。另外,你知道什么是递归吗?因为我看不到。这就是为什么我寻求帮助,我不知道如何在indexOf(a,100)处使用该方法生成递归方法;?谢谢你,现在这很有意义!谢谢你的回答,这非常有帮助!