当前位置:编程学习 > JAVA >>

简单的循环问题,困了我一整天了,在线等

for (int i = 0; i < userShopCars.size(); i++  ) {
ShopCar s = userShopCars.get(i);
if (s.getItemId().getId() == id) {
int oldNum = s.getQuantity();
s.setQuantity(oldNum + 1);
i = userShopCars.size()+1;
return;

}else{

s.setItemId(item);
s.setUserId(user);
s.setQuantity(1);
shopCarDao.save(s);
}




其中userShopCars.size() 是1  问题是,每次这个循环都是把if (s.getItemId().getId() == id) 这个条件运行3次,加了return;也没用,baeck也没用,就是运行三次,怎么都运行三次,为毛,这个方法只有一个循环体,其它都是定义变量来的,有人能告诉我吗 --------------------编程问答-------------------- 自顶,求救啊 --------------------编程问答-------------------- if (s.getItemId().getId() == id) 这个运行了3次,而且加return和break都没用
那就说明前面有两次进的else呗,然后第三次s.getItemId().getId() == id这个是true了,
于是就退出了
其实你有这句i = userShopCars.size()+1;在if里面,有没有return和break都是一样的效果 --------------------编程问答--------------------
引用 2 楼 wapigzhu 的回复:
if (s.getItemId().getId() == id) 这个运行了3次,而且加return和break都没用
那就说明前面有两次进的else呗,然后第三次s.getItemId().getId() == id这个是true了,
于是就退出了
其实你有这句i = userShopCars.size()+1;在if里面,有没有return和break都是一样的……


我知道啊我之前就试过了,我试过if else 都放了return 都不行,我今天起码试了五六种方法,就这一个小小的问题,我弄了一天还弄不好啊  求救啊 --------------------编程问答-------------------- 而且, 正确地说应该他是  进了三次if  一次else都没进   我测试的时候,就是想他进到if 里,但进一次,把那个数加上一就够了,但他就是一弄,就帮我加了三次1  弄得我的数据不符合要求 --------------------编程问答-------------------- if和else里面都加上return都不行,还能执行3次?
那我只有怀疑是你eclipse出问题了
你加其他的打印代码在里面能执行吗?
不行的话,clean试试 --------------------编程问答-------------------- debug看看变量怎么变化的呀? --------------------编程问答-------------------- 例如: if (s.getItemId().getId() == id)  第一次是 s.getItemId().getId()的值是1, id是1 那就是为true吧  就执行我的方法体了,然后


system.out.printl("外循环的了")

for (int i = 0; i < userShopCars.size(); i++  ) {
ShopCar s = userShopCars.get(i);
if (s.getItemId().getId() == id) {
int oldNum = s.getQuantity();
s.setQuantity(oldNum + 1);
i = userShopCars.size()+1;
return;

}else{

s.setItemId(item);
s.setUserId(user);
s.setQuantity(1);
shopCarDao.save(s);
}

上面那段代码的那个system.out.printl("外循环的了")我在后台打印的时候也是显示了三条,而且,这个方法里绝对只有这个循环体了,要不然这点东西,我都不用搞一整了,还有哪些大侠能看出来吗???? --------------------编程问答-------------------- clean了好几次了,也不行,debug的参数也没什么问题,问题就出在他为什么把我的方法执行三次 --------------------编程问答-------------------- 有没有能帮一下啊 --------------------编程问答-------------------- 除 --------------------编程问答-------------------- 除 --------------------编程问答--------------------
引用 7 楼 qw2283345 的回复:
上面那段代码的那个system.out.printl("外循环的了")我在后台打印的时候也是显示了三条


很有可能是外部调用此方法。

另外没太看懂楼主想要做什么、 --------------------编程问答-------------------- 应该检查调用代码 --------------------编程问答-------------------- 这个很显然userShopCars.size()是三或者调用了三次 --------------------编程问答-------------------- 没表述清楚,不知道问什么。看是不是shopCarDao.save(s); 后,增加了记录?比如开始等于1.你save了一下。就过就加1了啊 --------------------编程问答-------------------- system.out.printl("外循环的了") 这个在循环外都能显示三次,说明还有循环了,或者递归调用了方法吧! --------------------编程问答-------------------- 最好debug一下,看看这三次是在for循环里连续出现的,还是这个for循环所在的方法本身被调用了3次。
再具体点说看看代码是不是执行到了return,执行了之后到哪去了 --------------------编程问答-------------------- 这size()等于1就不可能循环3次了。。所以你不要把思想停留在循环里面,看看有没有被调用了 或者这循环外面还有一个循环什么的。理解好概念,你就找出问题了 --------------------编程问答-------------------- 外部代码问题吧··
贴完整 --------------------编程问答--------------------
引用 19 楼 yiyicun 的回复:
外部代码问题吧··
贴完整


你可以把你完整的代码贴出来看看。 --------------------编程问答--------------------


引用 楼主 qw2283345 的回复:
if (s.getItemId().getId() == id) 

LZ你的id是多少?什么类型?
s.getItemId().getId() 它是什么类型? --------------------编程问答-------------------- 楼主 ctrl+h  搜下你的方法调用  然后再逐个语句排查吧  也用不了多久吧 --------------------编程问答-------------------- 不用想,肯定是此循环体被其他方法调用了3次 --------------------编程问答-------------------- i = userShopCars.size()+1;
--------------------编程问答-------------------- 这个还是自己debug来的快! --------------------编程问答-------------------- for (int i = 0; i < userShopCars.size(); i++  ) {
ShopCar s = userShopCars.get(i);
if (s.getItemId().getId() == id) {
int oldNum = s.getQuantity();
//如果是加了三次的话 在这break试试
s.setQuantity(oldNum + 1);
i = userShopCars.size()+1;
return; --------------------编程问答-------------------- 自己debug看其中的值,慢慢比较,你这样是问不出啥的,不完整 --------------------编程问答-------------------- 应该仔细找找还有没有其他方法调用此循环 --------------------编程问答-------------------- continue --------------------编程问答-------------------- 循环外都输出三次的话,那就是这个方法被调用了三次了呗,看看谁调用这个方法了,怎么调用的吧;
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,