我成功制作的软件逐字符地读取文本文件,将每个字母频率的计数存储在Int数组中,然后按字母顺序列出。我需要做一个降序格式。
我需要帮助的是如何将字符数与数组中的特定字符一起存储?
这是我当前输出的一个例子:
Letter Frequency
A 0
B 1
C 7
D 0
E 14
...等
我需要做到这样的事情:
Letter Frequency
E 14
C 7
B 1
D 0
A 0
这是我迄今所做的事情:
System.out.println("Letter Frequency");
while ((nextLetter = in.read())!= -1) {
current = ((char)nextLetter); letter
current = Character.toLowerCase (current);
if (current >= 'a' && current <= 'z'){
count [current- 'a']++;
total++;
}
else{
other ++;
}
}
for (int ii=0; ii<26; ii++){
System.out.printf ("%c %d \n", ii+ 'A', count [ii]);
}
答案 0 :(得分:0)
是的,因为Alfabravo和Henry说我们可以在这里使用UnexpectedValueException in Response.php line 403:
The Response content must be a string or object implementing __toString(), "object" given.
而逻辑是
如果再次将最大条目的计数设置为-1,则将其设置为-1 搜索最初的第二个值 最大的条目等等
以下是工作代码:(已测试)
Maps
答案 1 :(得分:0)
如果您想要排序列表,则不需要地图。创建一个合适的类并使用Collections.sort()。
class CharCount implements java.lang.Comparable<CharCount>{
public int character;
public int count;
public CharCount(int a, int b){ character = a; count = b; }
public String toString(){ return "" + (char)character + ":" + count; }
@Override
public int compareTo(CharCount another) {
return Integer.compare(count, another.count);
}
};
List<CharCount> hist = new ArrayList<>();
String input = "Halleluja";
for (int i = 97; i < 123; i++) {
hist.add(new CharCount(i, 0));
}
for (int i = 0; i < input.length(); i++) {
int asc = (int)Character.toLowerCase(input.charAt(i));
hist.get(asc - 97).count++;
}
Collections.sort(hist);
Collections.reverse(hist);
System.out.println("histogramm " + hist);