java - 递归计算字符串中的大写字符

标签 java string count char uppercase

我必须解决一个练习,递归地计算字符串中的所有大写字符 - 无论如何,我认为我可能已经找到了解决方案 - 但它不起作用...... 也许你可以帮助我?谢谢!

public static int CountCapitals(String s) {
    int counter = 0;
    // if (Character.isUpperCase(s.charAt(0)))counter+=1;
    if (s.length() == 0)
        return counter;
    if (s.length() == 1 && s.charAt(0) < 65 && s.charAt(0) > 90)
        return 0;
    if (s.charAt(0) < 'A' && s.charAt(0) > 'Z') {
        return CountCapitals(s.substring(1));
    } 
    if (s.charAt(0) >= 'A' && s.charAt(0) <= 'Z')
        counter++;
        return CountCapitals(s.substring(1));
}

最佳答案

您的代码的问题在于使用了计数器:每个调用级别都有自己的计数器,最初设置为零。底部的 ++ 运算符不起作用。

您需要根据上一次调用的结果计算本次调用的结果。您的基本情况(即 s.length() == 0)很好;其余代码需要更改,以便当第一个字母非大写时返回任何 CountCapitals(s.substring(1)) ;当第一个字母为大写时,您的函数应返回 1 + CountCapitals(s.substring(1))

关于java - 递归计算字符串中的大写字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17793665/

相关文章:

c# - 将一个字符串拆分为 2 个字符串

cakePHP - 如何获取相关模型的项目数?

java - JAXB 如何创建具有不同属性值的重复元素

java - JSP 和 HTML 表单

python - 将字符串结构转换为另一个字符串结构

javascript - Spotfire 复选框过滤器项目计数

mysql - 计数时 MySQL 是否正确处理空值(不同的 col1、col2、col3)

java - WebDriver 和 ChromeDriver 无法解析为类型

java - Hibernate/jpa 将 Java 日期持久保存为 H2 DB Sql 时间戳

string - 在R中将字符串拆分为多行