帮我看下这个if-else语句 本帖最后由 longer262110 于 2012-08-22 09:08:57 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 LZ DeBug一下吧,看看在list.size()>0时 System.out.println("大小");有输出结果么。我猜可能的原因你去尝试一下吧1 循环是否结束, 2 是否出现异常。 希望对你有所帮助 list.size()>0的时候的log信息发一下吧 list.size()是得到数组元素的总数,如果数组不为空,就把所有元素删掉,假如mymap,否则,直接加入mymap. 我写那么多System.out.println就想想测试一下的,但是都没有打印 这是打印结果:ip:10.98.101.33shijian:1345599903298size:0helloip:10.98.101.33shijian:1345599908202size:1time:1345599903298时间间隔:0.08mtimes:1您一分钟内访问没有超过2次 不是java的语法问题,是你代码写的有问题。当list.size>0时,楼主的代码: list.remove(i);---------------list.add(mymap);这句有问题,List每remove掉一个元素以后,后面的元素都会向前移动,此时如果执行i=i+1,则刚刚移过来的元素没有被读取。而且在循环中执行代码: if (list.get(i).get("ip").equals(ip)) {} else { mymap.put("ip", ip); mymap.put("time", shijian); mymap.put("times", 1); list.add(mymap);//注意这句,可能造成一直循环 } 可能造成无限循环,这也就是楼主说的“如果list.size()>0则执行到最里层那个if-else的时候就完了呢,不执行iPXianZhi()后面的语句了,不打印hello”的原因了 问题得到解决,不过不是7楼朋友说的那样,也请这位朋友好好想想,加强学习。首先谢谢各位热心的解答。是这个地方有问题mymap.put("times", ((Integer)(list.get(i).get("times")))+1);,应该怎么处理这样的问题,请各位好好想想,互相学习。 ip:10.98.101.33shijian:1345601541130size:0helloip:10.98.101.33shijian:1345601545741size:1time:1345601541130时间间隔:0.08mtimes:1cishu:2您一分钟内访问没有超过2次访问次数时间间隔大小helloip:10.98.101.33shijian:1345601554049size:1time:1345601541130时间间隔:0.22mtimes:2您一分钟内访问超过了2次访问次数时间间隔大小helloip:10.98.101.33shijian:1345601559550size:1time:1345601541130时间间隔:0.31mtimes:2您一分钟内访问超过了2次访问次数时间间隔大小hello 楼主发生越界异常了么还是其它异常了呀! try catch很重要。 list.remove(i); mymap.put("ip", ip); mymap.put("time", time); mymap.put("times", ((Integer)(list.get(i).get("times")))+1); list.add(mymap); System.out.println("您一分钟内访问没有超过2次");这个地方先是remove了,然后再去get,这里有问题。 昨天还好好的,莫名其妙的问题, app2sd的源码 android推送 androidpn 服务器端运行不起来 Android图片拖动问题 主线程给工作线程发消息,工作线程收不到消息,求解 哪位能推荐下那款手机定位比较好的,是要装GPS定位软件么? 新手咨询如何通过eclipse搭建android平台 怎么使用 HTTP GET 和 POST 传递参数 一个Fragment练习中碰到的问题 android开发的界面UI布局问题 android webview 加载了一个本地的html问题 如何将汉字转为url编码?
这是打印结果:ip:10.98.101.33
shijian:1345599903298
size:0
hello
ip:10.98.101.33
shijian:1345599908202
size:1
time:1345599903298
时间间隔:0.08m
times:1
您一分钟内访问没有超过2次
当list.size>0时,楼主的代码:
list.remove(i);---------------list.add(mymap);这句有问题,List每remove掉一个元素以后,后面的元素都会向前移动,此时如果执行i=i+1,则刚刚移过来的元素没有被读取。而且在循环中执行代码:
if (list.get(i).get("ip").equals(ip)) {}
else {
mymap.put("ip", ip);
mymap.put("time", shijian);
mymap.put("times", 1);
list.add(mymap);//注意这句,可能造成一直循环
}
可能造成无限循环,这也就是楼主说的“如果list.size()>0则执行到最里层那个if-else的时候就完了呢,不执行iPXianZhi()后面的语句了,不打印hello”的原因了
shijian:1345601541130
size:0
hello
ip:10.98.101.33
shijian:1345601545741
size:1
time:1345601541130
时间间隔:0.08m
times:1
cishu:2
您一分钟内访问没有超过2次
访问次数
时间间隔
大小
hello
ip:10.98.101.33
shijian:1345601554049
size:1
time:1345601541130
时间间隔:0.22m
times:2
您一分钟内访问超过了2次
访问次数
时间间隔
大小
hello
ip:10.98.101.33
shijian:1345601559550
size:1
time:1345601541130
时间间隔:0.31m
times:2
您一分钟内访问超过了2次
访问次数
时间间隔
大小
hello
list.remove(i);
mymap.put("ip", ip);
mymap.put("time", time);
mymap.put("times", ((Integer)(list.get(i).get("times")))+1);
list.add(mymap);
System.out.println("您一分钟内访问没有超过2次");
这个地方先是remove了,然后再去get,这里有问题。