我想弄清楚这一点:
double chiSquare = ((double)(hashtable.get(key).intValue()/noWords))/* * Math.log10((NO_DOCUMENTS/all.get(key)))*/;
if (key.equals("love")){
System.out.println(hashtable.get(key));
System.out.println(all.get(key));
System.out.println(noWords);
System.out.println(chiSquare);
System.out.println((double)1/841);
System.exit(0);
}
为什么打印chiSquare,打印为零,而打印1/841给出双倍值?
哈希表是<String, Integer>
答案 0 :(得分:4)
正如@GregS在他的评论中指出的那样,int除以int是一个int。 将其中一个数字转换为双数将产生您想要的输出。
double chiSquare = ((double)hashtable.get(key).intValue())/noWords;
或者,使用Integer上的便捷方法将其转换为double:
double chiSquare = hashtable.get(key).doubleValue()/noWords;
答案 1 :(得分:1)
因为括号不正确。
double chiSquare = ( (double) hashtable.get(key).intValue() )/noWords;