Возвращает количество раз, когда символ появляется в строке

public class StringFind {

   /** findLetter looks for a letter in a String
    * @param String letter to look for
    * @param String text to look in
    * @return boolean true if letter is in text
    * After running the code, change this method to return
    * an int count of how many times letter is in the text.
    */
    public int findLetter(String letter, String text) {
        int count = 0;
        for(int i=0; i < text.length(); i++) {
            if (text.substring(i, i+1).equalsIgnoreCase(letter)) {         
                count = count++;
            }
        }
         
        return(count);
    }

    public static void main(String args[]) {
        StringFind test = new StringFind();
        String message = "Apples and Oranges";
        String letter = "p";
        System.out.println("Does " + message +  " contain a " + letter + "?");
    }
}

В этом коде есть ошибка, и я не знаю, как ее исправить. Этот код должен возвращать количество раз, когда буква появляется в сообщении, которое вводит пользователь. Я изо всех сил пытался понять, что мне нужно изменить без ошибок.

Привет @BenBerinsky, твой код не вызывает метод findLetter?

Mr R 21.03.2022 02:06
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
1
56
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Первая ошибка в findLetter, где у вас есть

count = count++; // this is effectively count = count;

Которые должны быть

count++; // or count = count + 1;

Тогда ты не звонишь findLetter. Измените текущий println на что-то вроде

System.out.printf("%s contains %s %d times.%n", message, letter, 
        test.findLetter(letter, message));

Без других изменений я получаю

Apples and Oranges contains p 2 times.

Чтобы завершить ответ, данный Эллиоттом Фришем, ваша функция имеет первый параметр неправильно, это символ, а не строка, и, учитывая это, вам нужно изменить способ поиска символа в строке, используя функцию charAt, чтобы сделать это более простой (https://www.w3schools.com/java/ref_string_charat.asp). Это не обязательное изменение, но я думаю, что это имеет больше смысла.

public class StringFind {
    /** findLetter looks for a letter in a String
     * @param String letter to look for
     * @param String text to look in
     * @return boolean true if letter is in text
     * After running the code, change this method to return
     * an int count of how many times letter is in the text.
     */
    public int findLetter(char letter, String text)
    {
        int count = 0;
        for(int i=0; i < text.length(); i++)
        {    if (text.charAt(i) == letter)
            count++;
        }


        return(count);

    }

    public static void main(String args[])
    {
        StringFind test = new StringFind();
        String message = "Apples and Oranges";
        Character letter = 'p';
        System.out.printf("%s contains %s %d times.%n", message, letter, test.findLetter(letter, message));
    }
}

Другие вопросы по теме