我使用TreeMaps
来计算用户输入文字中的字母频率。当显示这些频率时,由于某些频率为零,因此输出非常混乱,而其他频率则是一位或两位小数。
例如,输入Harry
:
Letter |a |b |c |d |e |f |g |h |i |j |k |l |m |n |o |p |q |r |s |t |u |v |w |x |y |z |
Count |0.2 |0 |0 |0 |0 |0 |0 |0.2 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0.4 |0 |0 |0 |0 |0 |0 |0.2 |0 |
如何生成一个整齐间隔(并且不知道频率)的表格,如下所示:
Letter |a |b |c |d |e |f |g |h |i |j |k |l |m |n |o |p |q |r |s |t |u |v |w |x |y |z |
Count |0.2 |0 |0 |0 |0 |0 |0 |0.2 |0 |0 |0 |0 |0 |0 |0 |0 |0 |0.4 |0 |0 |0 |0 |0 |0 |0.2 |0 |
为了制作我的表格,我使用了简单的for
循环,这些循环在Treemap
中递增,我正在考虑System.out.format
命令,但我仍然在学习很多东西关于java
所以这可能是错误的。
我的for循环在这里:
System.out.print("Letter |");
for (char a: Allmap.keySet()) {
System.out.print(a + " |");
}
System.out.print("\n" + "Count |");
for (double b: Allmap.values()) {
System.out.print(df.format(b / CHARCOUNT) + " |");
}
答案 0 :(得分:1)
我认为你想要这样的东西,虽然我没有时间去测试它。
System.out.print("Letter |");
for (char a : Allmap.keySet()) {
System.out.print(a + " |");
}
System.out.print("\nCount |");
for (double b : Allmap.values()) {
System.out.printf( "%.2f |", d );
}
另请注意,此代码会将double
四舍五入到小数点后两位,因此3.14159
变为3.14
,2.71828
变为2.72
。
另外,这是我将double
四舍五入到小数点后两位的来源:
Round a double to 2 decimal places