Java 计算映射值的百分比

Java 计算映射值的百分比,java,maps,percentage,Java,Maps,Percentage,我制作了一个程序,使用TreeMap(String,Integer)(名为alphaFreq)计算给定字符串中所有字母的出现次数。现在,我想用百分比([A=12.3],[B=3.0],…..等)表示这些出现情况,因此我创建了另一个树状图(String,Double)(命名为percentage),复制了所有键,其值设置为零,并根据alphaFreq中的值编辑值,如下所示: for(int i=0; i<26; i++){ int temp; Character current


我制作了一个程序,使用TreeMap(String,Integer)(名为alphaFreq)计算给定字符串中所有字母的出现次数。现在,我想用百分比([A=12.3],[B=3.0],…..等)表示这些出现情况,因此我创建了另一个树状图(String,Double)(命名为percentage),复制了所有键,其值设置为零,并根据alphaFreq中的值编辑值,如下所示:

for(int i=0; i<26; i++){
   int temp;
   Character current = (char)(i+65);
   String frog = current.toString();
   temp = alphaFreq.get(frog);
   int perc = (temp/cipherLetters.length)*100;
   System.out.println(temp+"/"+cipherLetters.length+" = "+perc);
   percentage.put(frog,(double)perc);
}

for(int i=0;i我要做的第一件事是将您的百分比计算更改为:

int perc = (temp * 100)/cipherLetters.length;

考虑到您使用的是整数除法,(
temp
/
cipherLetters.length
)可能是
0

不客气。请务必单击复选标记以获得正确答案,以便其他人知道问题已得到解决。此外,如果您需要更精确的百分比,请单击复选标记(例如63.5%,而不是现在四舍五入到63%)然后你需要使用float而不是int。我让它加倍一次和float一次,但当它应该是16.667或63.533时,它会产生16.0或63.0,有什么想法吗?你需要做的不仅仅是简单地将“int perc”更改为“float perc”。赋值的右侧仍然使用整数算术,所以是舍入。试试“float perc=((float))temp*100.0f)/(float)cipherLetters.length;'Uhaaah看起来我需要上这方面的课。最后一个问题。有没有办法将它四舍五入到小数点后一位(12.4)而不是小数点后六位?参见