00:00
那么咱们之前的话呢,讲这个项目二的时候呢,咱们打开这个叫custom view,咱们当时写这个叫修改,操作的时候呢,当时咱们不是说过吗?说修改的时候呢,对于普通用户来讲呢,他是认为这个编号呢是从一开始的,对于咱们开发者来讲呢,咱们是从零开始的,所以咱们一开始呢,就是这块呢,Number要记得减个一,找到指定缩引位置上的这样的一个元素,然后呢,你后边呢,再去替换的时候说很容易呢,像这个位置呢,减一大家就给忘了,那忘了以后呢,显然这个程序就错了,那这块呢,假设大家就忘了写这个减一了,那么一运行呢,肯定是有问题,什么问题呢,我们把这个问题呢,再重新的演示一下啊先我run as,此时呢,我选一下这个叫修改,先先看我们这个四目前的话呢,这里边呢,是有一个客户的,然后呢,我现在点一个叫修改修改,我这时候呢,选一个一。咱们知道这个编号呢,是从这个一开始的,所以给我选个一,这王涛不变,然后性别不变,年龄比如说改成25岁,然后呢,再走电话也不变,邮箱也不变,这个时候的话呢,按说应该是修改成功的,但是我们一执行,大家发现呢,此时呢叫修改失败,这就还是我们说的这个问题,就是我们这个程序呢,执行呢,结果跟你想的呢不一样。
01:19
跟响不一样,那到底什么原因造成这个情况呢,我们就得来分析一下,这时候分析的话呢,这就涉及到这个叫调试的问题了,调试一方面呢,大家就相当于硬抗了,因为你现在呢,调用的是这个修改的功能,所以说呢,你肯定是蹦到这个修改这块,然后大家呢,就得看下边这些环节当中哪些呢可能会出现问题,说白了就是硬看一行行往下捋,当有一些呢,你不确定的时候,你适当的加一些c out的语句,比如像这个位置呢,你可以去sit out一下,看一下我们当前的这个cost是多少,包括呢,上面这个number,现在呢,这个number值又是多少,这个是呢,这个时候呢,只能是咱们通过这样的方式呢去做一个测试,这是我们在讲这个debug之前,那现在的话呢,咱们讲到这个debug了,咱们就可以呢,使用这个调试功能。
02:09
我们呢关心的是这个modify customer,咱们呢,进来以后看一下这个时候number是多少,我比较关心,然后接下来呢,你这个customer是多少,这个我们也让他停顿一下,然后再接下来,这是呢去获取这个值,真没啥可说的了,这呢得到一个customer这个信息是多少,然后replace行,这样的话呢,我就加了几个断点。加断点以后的话呢,我点右键做一个debug as Java application。行,哎,大家呢,你看到我现在点完以后呢,并没有出现这个debug这个透视图,为什么呢?因为现在呢,你还没涉及到这个执行到debug那个断点处,因为呢,咱们一上来这个要求跟用户做一个交互这块呢,就把我给拦住了,就啊也就是说呢,如果我这周选的是五。五这块的话呢,跟咱们加断点这个修改客户呢,还没啥关系,就是根本就没用到这个断点这个事儿,相当于呢,咱们这时候呢,还是这个正常的去执行我们这个像run as这样的功能一样了啊,这就是成这样了啊,那只有呢,我们去debug as Java application选择这个二修改客户的时候,这个时候呢,咱们才出现了这个断点的一个执行了,所以我们才会启动这个叫debug的透视图,好点一下yes。
03:23
进来了,进来以后我们看一看啊,目前呢,咱们这个程序呢,是走到这儿了,因为咱们在这加了个断点,那这个number呢,现在呢,需要我们去获取一下你想修改的客户编号,那咱们知道了,就一个人,咱就写个正常的一了啊,然后我这个回车一下。啊,获取我们这个值,这呢,我们再点一下这个走它这个下一步啊,此时这个number的话呢,我们拿到了是一没有问题,拿到一以后呢,不是负一,那这个程序呢,接着往下走,那接下来呢,它就获取一下我们这个位置的这个cast,然后往下再再执行一下。
04:00
这个卡的话呢,这块呢,这就得到了。哎,就得到了,大家也能看到,就是咱们这个当前执行的是custom view啊custom view里边呢,这不是咱们声明过这个对应的属性吗。说明过这个属性,其实我们在上面呢,当前你customer view这个对象点开,然后这边就有customer list,就是咱们造的这个list,这是呃,生成我们创建当前这个对象的时候呢,里边的一个属性,这个属性的话呢,长度是这个咱们设置成的是一个十,看list这个对象哈,对象里边呢,这不是有这个属性,数组长度是十,还有这个total,咱们有一个人嘛,都可以看到这个信息,然后十个数组长度里边呢,咱们只有第一个呢是有对象的啊,其他位置都是no啊,这些都可以看得到啊,行,这呢我再把它呢收起来。成,那咱们接下来还回到咱们刚才看到的这个断点的位置。这就到这了,那当前的话呢,我们这个cars呢,确实拿到了这个number是一,然后找到呢,诶正好就是咱们说的这个王涛就唯一的这一套数据了,那是不是那呢,显然不是,我们再走,那就蹦到这个,嗯,Else break,它就跳出for循环,直接呢进行到下边语句了,这块呢,需要咱们去输出相关的信息了,那我这块呢,就不一行一行走了,我直接就点上它。
05:19
按说呢,它执行到下一个断点了,但是你这个断点之间呢,又由于有这个输入的这个信息,所以在这呢就给阻塞的,等着我们去输入了啊这个内幕我不操作了,性别也不改,年龄我改成26岁。在会车,电话也不改,邮箱也不改,好再接着走。这块呢就到这了,此时的话呢,咱们这个获取到的这些信息,这个有我们改的,有没有改的,没改的,那就还是原来的,改了的话呢,就是我们现在变成的这26这呢,这个信息都拿到了,那么再接着往下,我们就根据已有的信息呢,造了一个新的customer呢,我们就新造好的这customer了,造好以后这个基本信息大家也都清楚是什么样子的。
06:02
就是这样个情况,好,这个不多说了,那有了这个以后,现在呢,我们到这个replace啊,按说这应该是靠谱的了,现在我们比较关心就是它内部的这个执行,所以我点一个叫into。这呢就进入到咱们这个replace customer这样一个方法里了,那进来以后大家看这个时候咱们的index呢,是一。你这时候你就得小心了,咱们这个修改的是第一个人的信息,但是这时候index呢,按说应该是零的,你看这时候是一,那一的话呢,一又大于等于一,所以我们这是往下走就变成一个false了。哦,因为你这个返回值是false,我们这时候清楚了,你再退出来false了,再往下走,所以说呢,这个是个false,再走就蹦到这个else当中了,就要修改失败啊这呢,我们就让他这个执行结束了,相当于呢,我们就发现了这个问题所在了,就是我们。在这个修改的时候呢,在这个位置呢,它是个false,究其原因是因为这里边返回是个false,就是因为我们这个index这个位置呢,写错了,应该有一个减一啊这呢就可以了。
07:10
就是这样一个情况啊,所以呢这呢,就是我们举的这样一个例子啊,把这个呢稍微停一下。大家呢,就是后续咱们在写代码的时候呢,大家可以去习惯的用一用我们这个debug工具啊,这个一旦上手以后的话,以后的话呢,这个你就离不了了,我们真正开发当中,大家不可能是这个硬看这样的一个代码执行的都是要用debug,因为咱们谁也不可能保证第一遍写程序呢都是正确的,那就需要呢去调试程序用debug。
我来说两句