gpt4 book ai didi

java - 使用递归方法查找字符串中的单词数

转载 作者:太空宇宙 更新时间:2023-11-04 06:56:21 25 4
gpt4 key购买 nike

我想使用递归方法(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com