我想使用递归方法(java)计算字符串中的单词数
到目前为止我写了这段代码
public static int CountWords(String sen) {
int count = 0;
int i = sen.indexOf(" ");
if (sen.isEmpty()) {
return 0;
}else
if (i == sen.indexOf(" ")) {
return count++;
}
//sen.substring(0,sen.indexOf(" ")-1);
count++;
return count + CountWords(sen.substring(i + 1));
}
当我调用该方法时,我总是得到0 谁能帮我运行这段代码
最佳答案
你如何使用indexOf
是问题所在。您将 i
设置为调用 indexOf
的结果,然后查看它是否等于使用相同参数对同一字符串调用 indexOf
的结果。测试结果 i == sen.indexOf("")
将始终为 true。这就是为什么你总是得到 0。
String#indexOf
如果未找到要查找的字符,则返回 -1。 indexOf
在这里非常方便。
此外,您不需要本地计数变量。在这里引入变量只会使代码更难阅读,因为读者必须四处寻找才能弄清楚它的值是什么。
假设您的输入在单词之间始终只有一个空格,则可以这样做:
public static int countWords(String s) {
if (s.isEmpty()) return 0;
if (s.indexOf(" ") == -1) return 1;
return 1 + countWords(s.substring(s.indexOf(" ") + 1));
}
对于单词之间的多个空格,您可以检查空格并跳过它:
public static int countWords(String s) {
if (s.isEmpty()) return 0;
if (s.indexOf(' ') == -1) return 1;
if (s.charAt(0) == ' ') return countWords(s.substring(1));
return 1 + countWords(s.substring(s.indexOf(' ') + 1));
}
关于java - 使用递归方法查找字符串中的单词数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22694558/