Java 计算字符';e';
嗨,我必须创建一个方法,它接受单词message,并计算字符e出现的次数。这就是我所拥有的,但我总是得到0。有什么建议吗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
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;
}