一个写程序时容易忽略的错误
有这样一个场景。
一个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%的时间用于编码。
这话我觉得很有道理。不经历思考,很难进步!