Java 计算字符';e';

Java 计算字符';e';,java,character,Java,Character,嗨,我必须创建一个方法,它接受单词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.charA

嗨,我必须创建一个方法,它接受单词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);



 }

}
这永远不会进入循环(除了一些短消息边缘的情况,它会在循环中停留很长一段时间),因为你对错误的方式有比较的感觉。你需要:

for (int i = 0; i < message.length(); i++)
for(int i=0;i
您不需要这些额外的变量,这很好:

int count = 0;
for (int i = 0; i < message.length(); i++)
    if (message.charAt(i) == 'e')
        count++;
int count=0;
对于(int i=0;i
这里有一个递归解决方案:

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;
}
publicstaticintcountchar(字符串消息,chare)
{
int charoccurrences=0;
for(int i=0;i
这里是另一种递归方法:


i>=message.length()-1
比这个还要大吗?如果你觉得脸皮厚:
count=message.replaceAll(“[^e]”,“).length()
为什么我对所有事情都投反对票????我想帮忙。有多种方法可以解决这个问题…我只是提供另一种。为什么这值得否决票?如果这不是使用循环和递归逻辑的混合,它可能会有价值。不要哭Noob。解决你的问题(记住,我们都还在学习),否决票可能就会消失。但我做的每件事似乎都被否决了,即使这是一个有效的答案。Noob,它可能被否决了,因为它以一种完全不必要的方式使用递归。递归确实有一定的优雅,但我认为这不是一个适合它解决的问题。它类似于def add(a,b):如果b==0返回a,否则返回add(a+1,b-1)
:-),换句话说,递归是好的,如果它可以快速减少潜在的解决方案空间(一个二进制搜索)。否则,函数调用的开销(在时间和堆栈空间上)可能会有问题。当您传入一个包含大量
e
字符的字符串时,您认为堆栈帧会发生什么情况?我编写的一个测试程序使用的字符串是4096e,但如果将其增加到8192,我们会在线程“main”java.lang.StackOverflowerError中看到
异常。递归是用于此作业的错误工具。@paxdiablo实际上
e
s的数量与此无关,而是消息的长度。我同意我个人不会使用递归来解决这个问题,而且我会避免用成千上万的
e
s来解析
String
s。
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;
}
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;
}