使用indexOf()方法查找包含"到"的单词。

时间:2014-11-22 06:29:38

标签: java

我正在编写一个程序来计算在其中有多少单词“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"));
    }
}

3 个答案:

答案 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