我正在编写一个程序来计算在其中有多少单词“do”。我使用indexOf()方法来做到这一点。例如,当我写“actualWord.indexOf('a'));”该程序将显示一个或多个单词中出现多少个字母'a'。我写了“actualWord.indexOf(”do“),我认为程序将计算包含”do“的单词数量,然后显示它。当我测试程序时,我写下”不做可行的冲洗“面团双“,输出应该是七,因为有7个单词包含”do“。但我的程序不这样做。事实上,当我写”actualWord.indexOf(“do”);“我试试代码通过写“do do do”程序说我有-1个单词“做”。我现在很困惑。有人可以告诉我哪里做错了吗?非常感谢你的帮助
import java.util.Scanner;
public class TheFinder
{
public static void main(String[] args)
{
Scanner input = new Scanner (System.in);
String yourSentence;
System.out.print("Enter your word here:");
yourSentence = input.nextLine();
String actualWord = yourSentence;
System.out.printf ("%s\n", actualWord);
System.out.print ("Found index the :");
System.out.println (actualWord.indexOf("do"));
}
}
答案 0 :(得分:1)
变化
System.out.println (actualWord.indexOf('at'));
到
System.out.println (actualWord.indexOf("at"));
'at'
无效字符文字
答案 1 :(得分:1)
方法s.indexOf("do")
不会返回" do"发生在字符串s
中。它返回第一次出现" do"的位置(索引)。因此,"do do do".indexOf("do");
返回0,因为第一次出现"做"发生在字符串中的索引0处。
如果要计算字符串中子字符串的出现次数,则必须自己编写。您可以使用重载版本indexOf(String, int)
。 给定索引后,此方法返回子字符串的第一个索引。
public static int count(String haystack, String needle)
{
int count = 0;
int index = haystack.indexOf(needle);
while (index >= 0) {
count++;
index = haystack.indexOf(needle, index + 1);
}
return count;
}
答案 2 :(得分:0)
此
'do'
不是角色。这是一个String
。尝试
"do"
和
actualWord.indexOf("at") // not 'at'
修改强>
为什么不首先编写一个函数来计算String
出现的次数,如
public static int countOccurences(String str, String in) {
int count = 0;
int pos = str.indexOf(in);
for (; pos > -1; pos = str.indexOf(in, pos + 1)) {
count++;
}
return count;
}
然后你可以打电话给那个
public static void main(String[] args) {
String yourSentence = "don't doing do doable douche dough double";
System.out.println(countOccurences(yourSentence, "do"));
}
输出(按要求)
7