我刚刚做了一个算法来计算字符串中字符的频率。我感到困惑的是如何对频率进行排序,以便将出现次数最多的字符列在顶部,而将出现次数最少的字符列在底部。
起初我尝试让另一个变量“fc”(用于频率计数器)与我原来的计数器变量“k”一致。但是我陷入了如何对这个频率进行排序的思考过程中,我制作的 fc var 毫无用处。
感谢您提供的任何帮助!
这是我的代码:
import java.io.*;
public class Freq
{
public static void main(String args[])throws IOException
{
//read input stream
BufferedReader in=new BufferedReader(new InputStreamReader(System.in));
int ci,i,j,k,l,fc;l=0;
String str,str1;
char c,ch;
System.out.println("Enter your String");
str=in.readLine();
i=str.length();
//cycle through ASCII table chars and obtain chars typed
for(c='A';c<='z';c++)
{
k=0;
fc=0; //fc keeps count like k
for(j=0;j<i;j++)
{
ch=str.charAt(j);
if(ch==c)
k++;
fc=k-1; //was going to represent this counter for 'less than k'
}
if(k>0)
System.out.println("The character "+c+" has occured for "+k+" times");
}
}
}