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