используйте метод indexOf (), чтобы найти слово, состоящее из «to»

1

Я пишу программу, в которой подсчитывается количество слов, которые "делают" в ней. Для этого я использую метод indexOf(). например, когда я пишу "actualWord.indexOf(" a ")); программа покажет, сколько букв "а" появляется в предложении или словах. Я пишу "actualWord.indexOf(" do "), и я думаю, что программа будет подсчитывать, сколько слов содержит" делать "в ней, а затем показывать ее. Когда я тестирую программу, я пишу слова" не делаю doable douche тестовый двойной ", выход должен быть семи, потому что есть 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 ответа

1

Метод s.indexOf("do") не возвращает количество вхождений "do" в строку s. Он возвращает позицию (индекс) первого появления "do". Итак, "do do do".indexOf("do"); возвращает 0, поскольку первое вхождение "do" происходит при индексе 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;
}
1

изменение

System.out.println (actualWord.indexOf('at'));

в

System.out.println (actualWord.indexOf("at"));

'at' - недопустимый буквенный символ

  • 0
    Я делаю глупые ошибки. хорошо, уже исправьте это. но вывод не то, что я ищу. Я просто заново редактирую свои вопросы. большое спасибо за помощь
  • 0
    Я не вижу обновления в вопросе
Показать ещё 3 комментария
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
  • 0
    Понимаю. поэтому я должен использовать «» вместо «»
  • 0
    @NumbNuts Отредактировано, чтобы дать вам простой способ сделать то, что вы, кажется, на самом деле хотите.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню