读书人

一个写程序时容易忽略的异常

发布时间: 2012-10-30 16:13:36 作者: rapoo

一个写程序时容易忽略的错误

有这样一个场景。

一个List中存放有一些数字,需要删除其中所有是1的元素。

很多人可能顺手就写了。

for(int i=0;i<list.size();i++){   if(list.get(i)==1){    list.remove(i);     }}


实际上这是错误的,我们忽略了删除过程中list的变化,导致最终有一部分1没有被删除。

?

正解应该是这样的:

for(int i=0;i<list.size();i++){   if(list.get(i)==1){      list.remove(i);      i--;   }}或for(i=list.size()-1;i>=0;i--)  if(list.get(i)==1)    list.remove(i);

?类似的情况,我们程序员可能由于“惯性”并没有注意到,在不经意间,我们犯下错误


前几天写代码就碰到个这个问题,倒着操作一切就没问题了 9 楼 shuangpan.zhang 2011-09-01 很有道理,前段在做开发中遇到相同的情况,当时我做的编码。由于惯性 直接就coding了。 10 楼 MyGodness 2011-09-01 shuangpan.zhang 写道很有道理,前段在做开发中遇到相同的情况,当时我做的编码。由于惯性 直接就coding了。
我们在编码中应该更多的去思考,不能不知所谓的写程序。
我同事说过一句话,80%的时间应该用于思考,20%的时间用于编码。
这话我觉得很有道理。不经历思考,很难进步!

读书人网 >编程

热点推荐