在计算出特定字符串中出现的字母的频率后,我尝试将这些值存储在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]);
}
答案 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
的值,并进行适当的调整。