关于Java的Hashtable的问题(把Hashtable的值清空了再输入,新值却和旧值累加了)
我原本是希望用Hashtablepr.put(referenceNo,serviceprice)存一个价钱,用Hashtableht.put(referenceNo,in...
我原本是希望用Hashtable pr.put(referenceNo,serviceprice)存一个价钱, 用Hashtable ht.put(referenceNo,info)存客户资料.(reference No.相当于一个客户号码,可以用它提取客户资料,也就是这里的KEY)预算的时候把价钱存进Hashtable pr里。 pr.clear(); //清空Hashtable pr serprice +=getCost;
pr.put(refer,serprice); 结算的时候通过调用Hashtable pr里存的值来计算。 double getoldCost = (Double)pr.get(refer); 问题: 用Hashtable pr存了第一个数值(a),然后取出来用完了就马上用pr.clear();清零了。然后第二次又用Hashtable pr 存了一个数值(b),结果这次从Hashtable pr中取出的值却等于a+b。明明用pr.clear();把Hashtable pr里面的KEY给清除了,value却还是累加了。也试过用remove(Object key);移除相应的value,可还是累加了。我怀疑是不是value存在内存里,删了Hashtable pr 的值却还是有值给它累加。如果是这样该怎么办?请大虾教导················ 展开
pr.put(refer,serprice); 结算的时候通过调用Hashtable pr里存的值来计算。 double getoldCost = (Double)pr.get(refer); 问题: 用Hashtable pr存了第一个数值(a),然后取出来用完了就马上用pr.clear();清零了。然后第二次又用Hashtable pr 存了一个数值(b),结果这次从Hashtable pr中取出的值却等于a+b。明明用pr.clear();把Hashtable pr里面的KEY给清除了,value却还是累加了。也试过用remove(Object key);移除相应的value,可还是累加了。我怀疑是不是value存在内存里,删了Hashtable pr 的值却还是有值给它累加。如果是这样该怎么办?请大虾教导················ 展开
3个回答
2013-05-30
展开全部
您的serprice 是怎么定义的?如果不是primitive类型,Java都是按地址传输的,如果在您的程序中没有地方重新初始化serprice ,那么它会一直指在原地,不断累计,所以如果你试第三次,得到的会是a+b+c。这个其实和是否清空pr没什么关系。如果愿意的话,可不可以把您的这段程序完整的贴出来,好给您一些更具体的意见?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-05-30
展开全部
因为原程序太大,所以这里只写出了GUI里generate code下button action performed的程序。而我把double serprice放到整个大到程序里去初始化了,所以单独这些按键运行的时候没有把serprice初始化,以至累加了。现在改好了。程序OK了···谢谢了··太高兴了··
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2013-05-30
展开全部
Hashtable 是你自己写的还是调用系统包的? 如果是系统的。你确定你调用的包是java.util的吗?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询