Подсчет символа «е»

1

Привет, мне нужно создать метод, который принимает слово message, и подсчитывает, сколько раз символ e появляется, это то, что у меня есть, но я всегда получаю 0. любые предложения?

public class run
{
  public static void main(String[] args)
  {


  String message ="message";


  int count=0;
  for(int i=0; i>=message.length()-1;i++)
  {

    char ch = message.charAt(i);
    char e='e';
    if( ch == e)
    {
     count = count +1;

    }

  }

  System.out.println(count);



 }

}
Теги:
character

3 ответа

4
Лучший ответ
for(int i=0; i>=message.length()-1;i++)

Это никогда не войдет в цикл (за исключением некоторых случаев кратковременного сообщения, где он будет оставаться в цикле довольно долгое время), так как у вас есть смысл сравнения по неправильному пути. Тебе нужно:

for (int i = 0; i < message.length(); i++)

И вам не нужны эти дополнительные переменные, это будет хорошо:

int count = 0;
for (int i = 0; i < message.length(); i++)
    if (message.charAt(i) == 'e')
        count++;
  • 0
    О человек, спасибо! Я не знаю, почему я не мог этого увидеть!
0

Вот еще один рекурсивный метод:

public int countE(String str) {

    int count = 0;

    if (str.charAt(0) == 'e') 
        count++;

    if (str.length() > 1) {
        count += countE (str.substring(1));
    }

    return count;
}
  • 0
    @ambigram_maker спасибо за редактирование.
  • 0
    И когда вы передаете строку с большим количеством символов e , что, по вашему мнению, произойдет с точки зрения стековых фреймов? Тестовая программа, которую я написал, работает со строкой 4096 е, но при увеличении до 8192 мы видим Exception in thread "main" java.lang.StackOverflowError . Рекурсия - неподходящий инструмент для этой работы.
Показать ещё 1 комментарий
0

Это рекурсивное решение:

public static int countChar (String message, char e)
{
    int charOccurences = 0;

    for (int i = 0 ; i < message.length () ; i++)
    {
        if (message.charAt (i) == e)
        {
            charOccurences++;
            message = message.substring (0, i) + message.substring (i + 1);
            return charOccurences + countChar (message, e); 
        }

    }
    return charOccurences;
}
  • 0
    Почему я получаю отрицательные отзывы за все ???? Я пытаюсь помочь. Есть несколько способов решить проблему ... Я просто предлагаю другой. Почему это заслуживает отрицательных голосов?
  • 0
    Если бы это не было гибридом цикла и рекурсивной логики, это могло бы чего-то стоить.
Показать ещё 7 комментариев

Ещё вопросы

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