类words定义了一个递归函数来执行与字符串相关的操作。下面给出了该类的详细信息:
Class name : words
Data members/instance variables
text : to store string.
w : integer variable to store total words.
Member functions/methods
words( ) : constructor to store blank to string and 0 to integer data.
void Accept( ) : to read a sentence in text. Note that the sentence may contain more
than one blank space between words.
int FindWords(int) : to count total number of words present in text using Recursive
Technique and store in ‘w’ and return.
void Result( ) : to display the original string. Print total number of words stored in
‘w’ by invoking the recursive function.
我试过这个密码
public static int CountWords(String str) {
int c = 0;
int i = str.indexOf(" ");
if (str.isEmpty()) {
return 0;
}else
if (i == str.indexOf(" ")) {
return c++;
}
//str.substring(0,str.indexOf(" ")-1);
c++;
return c + CountWords(str.substring(i + 1));
}
但是我需要返回一个整数值,我对此感到困惑。
2条答案
按热度按时间f2uvfpb91#
在您的代码中,最后一个return语句不可访问。原因:在这两种情况下,你都放置了if-else块和put return,所以函数实际上是从if-else块本身返回的(在else中,if的条件总是true,因为你赋值了str.indexOf(““))。
我已经根据你上面的问题写下了代码...
希望你觉得它工作得很好。
beq87vna2#
你的函数已经返回了一个整数,它碰巧总是0。
始终为true,并且c只在return语句传递后更新,这是因为已经将i设置为indexOf(““),并且使用int实现了增量,另外,记住这里需要将单词数增加2,因为函数在两个单词之间结束。
因此,请改用以下命令:
您应该看到,现在函数返回了正确的字数。