题目:*18.17 (数组中某个指定字符出现的次数)
编写一个递归的方法,求出数组中一个指定字符出现的次数。需要定义下面两个方法,第二个方法是一个递归的辅助方法。
public static int count(char[] chars, char ch)
public static int count(char[] chars, char ch, int high)
编写一个测试程序,提示用户在一行中输入一个字符列表以及一个字符,然后显示该字符在列表中出现的次数。
-
代码示例
编程练习题18_17CharacterCount.java
package chapter_18;
import java.util.Scanner;
public class 编程练习题18_17CharacterCount {
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
System.out.print("Enter a string and a character: ");
String str = input.next();
char ch = input.next().charAt(0);
System.out.println(count(str.toCharArray(), ch));
input.close();
}
public static int count(char[] chars,char ch) {
return count(chars, ch,chars.length-1);
}
public static int count(char[] chars,char ch,int high) {
if (high < 0) {
return 0; // 基本情况:如果high小于0,返回0
}
int count = 0; // 局部变量来计数,避免使用静态变量
if (chars[high] == ch) {
count++;
}
return count + count(chars, ch, high - 1); // 递归调用并累加结果
}
}
-
输出结果
Enter a string and a character: AAaaAAaaAAaa a
6