Java 计算字符串中字母的频率

Java 计算字符串中字母的频率,java,arrays,Java,Arrays,在计算出现在特定字符串中的字母频率之后,我尝试将这些值存储在int数组中。该数组在整个字母表中总共有26个值。int变量frequency用作计数器以捕获字符串中每个字母的频率,但计数计算错误。我做错了什么 int frequency = 0; char character; alphaCounts = new int[26]; for (int i = 0; i < alphabet.length; i++) { frequency = 0; for (int j =

在计算出现在特定字符串中的字母频率之后,我尝试将这些值存储在
int
数组中。该数组在整个字母表中总共有26个值。int变量
frequency
用作计数器以捕获字符串中每个字母的频率,但计数计算错误。我做错了什么

int frequency = 0;
char character;
alphaCounts = new int[26];

for (int i = 0; i < alphabet.length; i++) {
    frequency = 0;
    for (int j = 0; j < stringInput.length(); j++) {
        character = stringInput.charAt(j);
        if (character == alphabet[i]) {
            frequency++;
        }
    }

    System.out.println(alphabet[i] + "\t\t" + frequency);

    // Populating alphaCounts array with the freq values
    alphaCounts[i] = frequency;
    i++;
    System.out.print("\n" + "alphaCounts: " + alphaCounts[i]);
}
int频率=0;
字符;
字母计数=新整数[26];
for(int i=0;i
您的代码有一些问题。不过,您的总体问题可能来自这样一个事实:您在每个循环中递增
i
两次;一次在for循环中,一次在接近末端的身体中


另一个问题可能是如何定义字母表。您确定它包含ascii字符“a”到“z”的值吗?你们是在为这个案子负责吗?也没有理由使用单独的数组,您可以通过适当的调整直接去掉
j
的值。

下面是一段代码,用于查找字母的频率

String  input = "abcaaasdasdasd";
int freqarray[] = new int[26];
input = input.toUpperCase();
for(int i=0;i<input.length();i++)
{
    freqarray[input.charAt(i)-'A']++;
}
String input=“abcaaasdasd”;
int freqarray[]=新int[26];
input=input.toUpperCase();

对于(int i=0;i有什么问题?@gurvindersingh我试图将频率值分配给字母计数[]的底部部分由于某种原因不起作用…你说的
不起作用是什么意思?
?你遇到了一些错误?如果是,什么错误?粘贴一个堆栈。你应该告诉我们你预期会发生什么,以及会发生什么。不要让我们猜。“不起作用”没有告诉我们任何事情。而且,这并不是真正的最优。为什么要对字符串进行26次传递,而不是只进行一次传递,找到每个字母的索引,并在该索引处增加计数?`欢迎使用堆栈溢出!看起来您需要学习使用调试器。请自行解决一些问题。如果以后仍有问题,请随时提供更多详细信息。是的。但是如何将值添加到int数组?如果正确,添加值的方式。我怀疑是代码的其余部分导致计数为0。当我运行System.out.println(字母[I]+“\t\t”+频率)时;我得到所有字母a-z的适当频率,如果字母没有出现在字符串中,则得到0。但是,当我尝试将这些频率插入字母计数[]我插入了0。您的问题是,您从未将
字母表
中的值存储到
字母计数
中。虽然显示的代码从一开始就从未修改
字母表
,但我不确定您从何处获得这些计数。