作为程序员,你真的会写for循环吗?一个小姑娘贴了一段代码报错,然后问我哪里有问题,我一看原来是索引溢出的错误?原来,小姑娘犯了一个我们在开始用for循环基本上都会犯的错误!
这个问题很简单,其实就是集合循环的时候对内容进行移除,但是索引长度并没有改变导致的。
下图为正常循环过程:
假设一个集合的长度是16,此时,每移除列表一个内容,集合长度将会减少一位。如果继续按照16作为循环终止条件,那么当集合移除到指定个数时,必然会找不到对应下标的内容,因此就会报索引溢出的错误!
另外一个循环经常遇到的问题就是在循环终止条件变化的情况下,容易出现漏循环的情况。
想要避免这种问题的出现,普遍做法就是倒序删除集合内容,因为倒序循环即使后面内容的索引变了,也不会影响到前面的索引,这样就会避免删除元素内容导致的索引溢出或者索引异常的问题。
虽然问题很简单,但是在实际写代码的过程中,即使是老程序员也会不经意犯这个错,但是好在当错误出现的时候,我们能够立刻想到哪里出了问题!
但这个小姑娘,即使我给她画了示意图她似乎都似懂非懂,看来有些问题只有她在实际工作中遇得多了,才能理解!
下图附代码(C#):
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.