/**
* 清空所有条目
*/
public void clear() {
map.clear();
}
上面这个清空功能可以,但是下面这个删除元素就不行。我确定map.remove(bid)已经执行了,控制台下面都打印了要删除商品的 id,但是不知道为什么这个功能没有执行。添加,清空都可以,就删除不行。
这是整个项目的网盘地址:http://pan.baidu.com/s/1gdm00EJ
连数据库表的创建语句都有了,改下密码就行了,
帮我看看是什么问题
这是我改后的图:
报错了,我把错误写在后面的注释上了,怎么改?
如果不全,我上面有我代码的网盘地址,帮看看,谢谢
你报什么错贴出来看看,我估计是没导包,你试试快捷键ctrl+shift+o
追问包的错就是我后面的注释,类型不匹配。
还有我像添加方法那样写删除会报错:map.remove(cartItem.getBook().getBid());
空指针异常,要么map为空,要么cartItem为空,要么cartItem.getBook()为空
追问应该怎么改?
还有,我按照你上面的写法,报错了,错误信息就写在代码旁边的注释
要不你私信我你的联系方式吧,这样百度说的好郁闷,我远程帮你看看,这种问题应该很简单的
追问已经私信了
这种打印情况该怎么改呢?bid存在是1,但是删不掉
晕死,是不是里面的1是int型,不是String类型?
map.remove(1); 而不是map.remove("1");
如果你确定map中有为1的商品的话,只能说明1的类型不匹配。
1是int型;“1”是String类型,在这两者并不相等。
你把放到map中的代码贴上来。
或者你试试 map.remove(1);
这是点击添加后控制台的信息,没问题:
这是点击“删除”后控制台信息,就算加上map.remove(1)也删不掉:
这是删除按钮的jsp传递参数:
而且上面还有我的全部代码的网盘地址,请指教
book.bid确定是String类型?不是Int类型?
在add方法打印出 bid。 System.out.println("放入map中的key="+carItem.getBook().getBid());
//在删除方法中打印bid
System.out.println("删除时的key="+bid);
// 打印map中的key。
for(Map.Entry entry : map.entrySet()){
System.out.println(entry.key());
}
按照上面的方法,控制台打印,蓝色部分是点击删除时的信息
如果我按照添加方法那样写删除:map.remove(cartItem.getBook().getBid());
会报错:
对比什么?都打印过了,要删除的商品id都是 1 +我后面自定义的字符串
追答那要看map里的值是怎么样的啊,是否存在或相等,还可以进一步,把map里的key都拿来和bid equals 一下看看是否相等 不检查清楚怎么知道问题所在
还可以试一下 map.containsKey(bid )
这种打印情况该怎么改呢?bid存在是1,但是删不掉
这样可以看出来,map里有一个,这个的key不是bid啊
你打出map的key来:map.keySet().iterator().next() 打印出这个
然后想想你put到map的时候是怎么写的吧
这是添加方法
这是删除方法
看控制台的信息,填加的时候有个是特别长的bid
如果我按添加方法那样写删除,会出错:map.remove(cartItem.getBook().getBid());
报错
清空都能清掉了,怎么不存在