计算字符串中字母的频率

时间:2016-12-04 17:21:07

标签: 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 = 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]);
}

2 个答案:

答案 0 :(得分:1)

以下是一段用于查找字母数字的代码

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

答案 1 :(得分:0)

您的代码存在一些问题。您的整体问题可能来自于每个循环增加i两次的事实;一旦进入for循环本身,一旦进入接近结束的身体。

另一个问题可能在于您如何定义alphabet。你确定它包含ascii字符'a'到'z'的值吗?你在考虑案件吗?也没有理由使用单独的数组,您可以直接关闭j的值,并进行适当的调整。