00:00
接着的话呢,我们还剩两个功能,一个呢叫修改,一个叫删除,诶那我们就先来看这个修改吧,把这个呢注释一下,下边呢来进行修改,好我们还是先看看人家这块呢,这个是什么样的情况啊,这是咱们自己写的,这个都关了,就这块儿呢,你能看到之前开启的这样的一些这个窗口啊,这个我们都把它关掉吧,要不它这个。红色的话呢,就是还开启状态,这时候呢,还是一个没有停止的一个程序了啊,我们再重新run一下,这时候呢,我们选一个二,这是人家写的这个啊修改首先呢,就要修改客户啊CTRLC一下,咱们也这样做。CTRLV好修改客户了,接着啊,修改客户的话呢,他先说了一个事儿,说请选择待修改客户的编号。就是你想修改的是哪个客户这个意思,这个换行就不要了,直接呢在后边去写,那我们呢,在这块呢,验证一下,看他这块怎么处理的啊,写负一的话呢,就退出先写个负一吧。
01:10
退出以后你发现呢,它实际上是把这个方法推出了,直接的又蹦到这个主界面了啊,要考虑到这样一个情况,那接着嗯,我们再选一个二,他说呢,写客户列表,嗯,咱们目前呢,这我重新跑起来的,我这里边有没有客户呢,记不清了,看一看啊,我先负一再回来,我先看下这个四。有有个张三在啊,有个张三在,我这时候呢,再选这个二修改,这个时候呢,就意味着呢,我们要想能够去修改,只能够写一,因为只有一个张三在,当你写二的时候呢,他就说找不到这个客户。写零,写零也找不到,就是对于咱们普通的这个跟这个界面交互的这个客户来讲,他就不懂程序了,他不懂程序的话,对于他来讲,他认为呢,开始的就是一,咱们呢,做Java的,你知道这个数组是从零开始的啊,那你给人家去这个呃用的时候呢,他得认一,他不认零啊,所以这块呢,我们只有一个人的话呢,你只能是这个编号呢,是从一开始的写个一,这时候呢,实际上是在改这个张三啊,那刚才也看到了,就是当我们输入的这个不靠谱的时候,就是不是这个你有几个人啊,不是这个范畴的范围之内的时候呢,得呢重新的让你去输入,那就意味着这个操作你会发现它翻来覆去的执行,直到呢,你输入一个靠谱的才可以。
02:37
那我这输入一个一了,那他呢,就相当于是开始进入这个修改的这个程序了,行,那到此呢,咱们先来考虑一下怎么写啊。刚才呢,看到这个语句呢,它有可能被反复的执行,显然呢,应该放在一个循环中,而这个循环呢,又没有明确说执行几次,应该是直到你输入一个靠谱的才可以。啊,就是说你这个有几个人,你这个呢,三个人你只能写123,就是只能是这三个数,非这三个数的呢,就都得重新写,所以呢,我们既然不知道明确执行多少次,又得是用类似这样的这个结构了,这样子,然后把它呢得放进去得这么着好,那我们这时候呢,首先呢,从控制台呢,先去获取一个值了,啊这个我们就cm utility点,哎,我去read的一个整数嘛。
03:31
啊,CTRL1这个是咱们叫修改啊,修改呢,我就记为一个number了。点击一个number,首先的话呢,我们看到当用户输入的是负一的时候。这个时候呢,就直接退出了,这个退出呢,我们说直接就回到主界面了,回到主界面呢,相当于就意味着我们这个方法呢,整个就结束了,我直接写个return。哎,这个方法一结束,这就又退回到咱们最初的,相当于你这个结束了,这个结束呢,整个这个Switch case结束后边没有直接就回到这块了,哎,这样的一个情况啊,行,那再接着,那如果你要是不是负一,不是负一的话呢。
04:17
写的也得靠谱才行,那我们就比如说咱们这个就一个人写了个二啊也不行,那接着怎么处理这个问题啊。有同学就说我判断一下我这个number是不是在那个total那个范围之内,是吧,对,这是一个招,另外的话呢,你想想我们是不是也写了这样的一个方法了,Get customer。我们把这个number就放进去。这呢就是咱们找指定这个位置上的那个客户呗,对,你要是找不到的话呢,自然而然是不是就是空了,那咱们就判断你是不是空,来决定你写的这个是不是靠谱,是不是也可以啊,对啊,前提是你得记得你写过这个方法,你要不记得里边这些都现都现写的,然后最后customer白写了。
05:07
咱们现在把这个之所以分开,不就是把干什么事,那就专门让具体类去做,把这个都抽离出来是吧,是这样的啊,这里边儿呢,有一个非常。严重的问题,或者非常需要你关注的问题,就是咱们这个number刚才说了,对于普通用户来讲呢。是从一开始的,对吧,那我这呢写了个number,咱们这个呢,是咱们程序员看的代码了,咱这个呢。是不是算是从零开始的,所以说呢,我这得加一啊减一啊减一吧,用户人家写这个一,它相当于是不是操作我们一减一,所以是零的那个数据了,对这个一定要小心啊,记得减个一,然后呢,CTRL1找到咱们这个customer。现在的话呢,我得判断这个哥们靠不靠谱了,说如果你这个cos呢,他要是一个闹,相当于呢,咱们类似于刚才这种情况,就一个人,你写了个二写了个零这种情况的,咱们呢,是不是都得做这样一个提示啊好CTRLC,他说V说呢,无法找到指定的客户,那无法找到指定客户。
06:24
那你只能是不是让他这个重新的再去进到这个循环里边再过来啊,就在蹦过来是吧?行这是这种情况,那目前呢,倒是结束以后呢,也确实就蹦过来了哈,那除此之外呢。这就相当于咱们找到了啊相应的客户。啊,相应这个编号的。这个客户了,你要是找到这个客户了,那下边呢,就开始一点点的得又去改了,那这个时候呢,意味着我们就得在这里边呢,去写这个逻辑了。
07:01
没问题吧,嗯,在这里边写是OK的啊,在里边写是OK的,那我这呢,我就这么着处理了一下,我就直接呢写了一个break啊。就在这里边写没有问题,但是呢,我回头写着写着发现这里边还得写循环,会导致呢,我们这个结构呢,看着挺复杂的,For里边有一个if,里边又套,里边又套,显得有点臃肿了,哎,我这呢先写个break。Break呢就叫结束循环,它一结束循环就意味着我们的代码呢,就跑到这来了。没问题,能跑到这儿来的,我说呀,那就一定是找到了这个客户了,这就叫修改客户信息,你想想,他要是跑不到这来,它就意味着还在这个if里边,它就直接又回去了,回去呢就又重新去找,要么呢,你是这个写负一,直接呢就回到主界面,否则的话呢,就是通过break才能够跑到这来,只要能跑到这儿,说明一定是找到客户了。能理解吧,哎,体会一下,或者说你要是感觉稍微有点吃力,你就把这个信形呢写到这里边也是可以的啊,那在这的话呢,我们就得需要呢,去做一个修改了,修改的时候呢,我们也给了一个用户的提示,就是原来呢,你这叫什么名,我们也写上了啊,比如说这个姓名你不想改,你就直接换行,性别呢也不想改,直接呢又换行,那就还记录原来的这个数据。
08:25
啊,那从这也能看到,就是我们必须呢,得知道用户呢,选择的这个编号对应的那个人是多少,那现在呢,咱们是在这写的,你想我在这儿能用咱们上面造的那个customer吗?我想get,你看我想get它的name是吧,你是不是把这个变量给定义到这里边了。For循环里边定义的出来以后就用不了了,那怎么办?有人那我把它这个扔拿出来啊,CTRLX直接放到这,那你拿出来以后呢,这个number是在里边获取的,那我再把它搁进去,搁进去一看又不行,搁进去那就再拿出来死循环了,怎么办啊对,咱们以前有过这样的经验啊,但是有同学呢,可能还没有太掌握啊,我看写程序的时候呢,问过这样的问题,诶这个的话呢,很好办,你把这个声明的拿出来。
09:18
然后呢,里边呢,哎,你给他去赋值这样子,呃,因为呢,你这个声明是在外面的,那自然而然的,我出了这个for循环以后呢,不会去销毁,所以我在这就可以去用卡S了,这么着办,这样子啊行,那咱们这块呢,就开始去修改,修改的话呢,先输出一下这个是这么着的啊先呢叫姓名。姓名一个括号,然后这块呢,加上咱们cost.get name,哎,再配一个这个括号,看后边有没有冒号啊,啊有。这个呢还是挺细致的啊行整个冒号这呢是姓名,那你cm utility点二哎盖嗯不是get了read读一个字符串,这个时候呢,就用下边了,我们修改的话呢,长度的一个限制,比如还是这个十哈,就是如果要是用户没有输入信息,咱们呢就以后边它默认写的这个呢,作为一个返回值,那就是咱们卡点诶get一个它的name。
10:28
这样的好,然后这时候我们CTRL一下,得到一个name。哎,这个方法的意思呢,就是说当用户要是不是换行了,他自己输入的一个姓名,那就以他输入的为准,他如果要是没有输入直接换行的,那我们就以这个参数为准,所以呢,我们这里边它叫default value,就是默认的一个值啊,那你要没修改,那就还拿你原来的这个名字为准行类似的话呢,我们就接下来获取它的其他这几个信息啊,类似的都是这样写CTRLC啊,先把这几个呢先整过来啊,姓名性别,哎这个呢,我们就是。
11:10
第二啊,Get一个这个gender。年龄。年龄get一下他的age电话。Get一下它的这个缝。好,接着邮箱。看第二该推荐他的这个email。行,那现在呢,这里边呢,你每个都得去读一下啊,嗯,Cm utility点我们去read,这是它的性别,性别呢是个叉还是调这个,嗯,这个你要是没有输入的话呢,来一个默认的,那就还是我们这个cost.get它的一个gender。
12:07
C1得到这个真的好,接着cm uil,第二我们去read,这是它的一个嗯,年龄啊in选下边这个,嗯,past.get它本身的一个年龄,如果没有输入呢,作为默认值cm utility.read电话string选这个电话呢,我们说是给了13位卡点去get它的一个缝。诶,CTRL1。哎,这是它的一个缝,好,再接着点儿,哎,我们再去read,嗯,油箱还是string。啊,邮箱我们给的是30位,嗯,如果没有输入呢,去默认的输出它的这个默认这个本身的这个email ctrl1得到一个email好。
13:10
这样的话呢,我们就把这个,呃,用户呢,可能是新输入的这个情况呢,就都获取到了,也可能有一些呢是旧的,把这些数据呢,咱们给他新装到一个对象当中,New一个customer out斜杠,哎我们这时候呢,就还是用的上面这样的几个变量名啊。这呢,就是咱们这个新的这个,我这改个名吧,这就我写个new customer。那这是个新的了,那改完以后我们接着这块走一下啊,这个姓年龄,年龄我们改成比如说34岁了,然后回车电话呢不改,然后邮箱也不改,他这就叫修改完成了,修改完成CTRLC一下,修改完成就意味着你确实是得改。啊,确实得是去改了,咱们这时候得到这个customer呢,这个customer呢,就是咱们这个用户可能是做过一些修改以后的新的这个对象啊,那我们要想去改咱们customer list,当初呢,咱们有过一个叫叫什么呀,叫replace,哎,这不就做修改吗。
14:21
这都是咱们已经写好的啊,点一下。我呢,想把这个位置上的数据改成一个,它改成了它,它就是它。关键呢,就是这个index,就是你想改的是哪个位置。你会发现这个index貌似其实就是这个跟number相关的了啊,Number是不是也给定义到里边了,也看不着了,所以number也同样的啊,CTRLC得生命到外面这块呢,直接来去赋值这样子啊,那如果你要把这个number就直接放到这了,对不对?对吗?这个同学都懵了都啊,这个应该怎么改啊,我是不是应该减个一啊?
15:13
就是咱们普通用户看到的呢,是从一开始的啊,咱们那会儿呢,比如说你就有一个人的时候,用户不是写的是一,实际上呢,咱们想找的就是一减一,所以是零的那个元素,那你这块自然而然的,你这个修改的时候,是不是也得是一减一修改第一个元素啊,这个减一一定要记得。减121的要记的假设呢,忘了忘了就删掉,我们等一下测试,你也会测出来,我现在给删了啊,删了就是你给忘,比如说那我们replace呢,这就相当于做了一个替换啊,CTRL1,哎,我们叫is replaced,哎,是不是替换成功了,那你可以写个if啊,说is replaced,如果它是个true,哎,那这块呢,你就显示这个信息,就要修改完成,那否则else。
16:10
那你就写一个叫修改失败。修改失败怎么会失败呢?嗯,在我们这个方法当中呢,修改失败就意味着呢,用户写的这个index不靠谱,就从这来看是吧,就是他可能写的这index是个负数,或者是一个很大的一个数,超出你这个嗯合理的范围了,他这都是一个失败,但是你去想啊,咱们在这个程序当中。额,额外的问一句哈,嗯,到这儿呢,会不会出现这种失败的情况呢?会啊,为什么会啊,对不会的,因为呢,就是你要是失败意味着他是S,他是false,是因为你写的这个,所以你不靠谱是吧?诶当然咱们这个先假设你这个写的是那个对的那个情况啊,就是正常不是都应该有个减一嘛啊就是咱们先不考虑那个事儿哈,简一不简易那个事咱先忽略掉,就用户写的这个数呢,他应该是靠谱的,因为咱们要不靠谱的是不是都已经在这过滤掉了啊,所以说他能够找到这个客户,肯定肯定这个索引呢,也是OK的啊,但是呢,从这个完整性上来讲,我们就加一个,他其实呢,是没有机会执行到这的啊。
17:27
好,这样的话呢,咱们就写完了,这是关于这个叫修改,实际上这块有一个问题,这是一个bug啊,那咱们现在假设一开始没有看到,那我们就开始呢,去进行测试了,你看怎么就能测出来了啊,我执行。现在呢,我们先看一下现有的客户列表,没有客户记录,咱们把这个加上吧。好打开了啊。打开以后,我们先看一下这个四有一个,嗯,那这个时候呢,我们这个再去添加一个。
18:08
嗯,或者我就不添加了,直接上来就测试这个修改吧,我这写个一,哎,先说你写一个这个二吧,这种都不行,三也不行,写一个零也不行。啊,然后写一个负一呢,也测试一下,哎又回到这个界面了,然后再来一个二,再写一个一,这时候呢,是我们要修改修改王涛了,写对一啊回车这时候呢,哎把这个王涛这条信息呢,首先找到了,哎姓名姓名改一下,改成叫哎王涛涛改是名,然后呢,回车性别不改,年龄不改,电话不改,邮箱也不改。好,邮箱也不改,现在我们要接着往下走了啊。你想想这时候会不会会不会有问题,我这写的是一哈,这个一呢,是不是就是我们这个number啊。
19:05
我从键盘读的是不是这就是number就是一啊好,现在呢,咱们这个一减一找到的确是第一个元素就是王涛了,然后现在再往下走,我们也获取到一个信息了,这个呢也拿到了,里边就光改了个name叫王涛涛,然后现在呢,你这个位置写的是一是吧,直接是一啊,那你想这时候会出现什么问题呢?嗯,会保存吗?会怎么着,那怎么着是不是就失败了呀?嗯,是不是就修改失败了,哎,这不就失败吗?就是它不会保存的,你想我这时候就只有一条数据,你只有一条数据的话呢,这个时候偷渡就是一,你这是一大于等于一,它直接就返回false了。
20:05
是不是就蹦到这儿了,我刚才说的那个说这个失败一般不会执行,我当时是说先忽略掉这个事儿是吧?啊先忽略掉这个事的时候是不会执行的啊,那这块呢,就要修改失败了,如果大家呢,去执行,你发现也出现这个失败了,这时候呢,你就发现,诶不对,我这都合理啊,是吧,那你就要修改失败了,这是一种情况啊,还有一种情况呢,是这样的,我这块呢,我先给你添加一个客户在。添加客户这个呢,比如说叫嗯,把这个潘瑶写进去。潘爻,这个爻还不太好写这个,呃,性别啊,年龄。30成熟一点啊,哎,这给一个电话号码,给一个邮箱。诶添加完成这时候我选一个四四的话呢,你看诶确实呢,此时呢有两条数据了,然后呢,注意啊,我现在呢去修改,修改的话呢,我写个一,那改的是王涛没问题啊,还是啊把改成王涛这个都不改好,我现在要回车了,会是什么情况,修改完成了,就是这时候你可能没有发现,诶不是修改失败啊,但是你这时候你看下四会是什么情况,潘瑶就没有了,变成王涛涛了。
21:36
嗯,就是你改的是第一条,结果呢,你这时候其实相当于改成第二条了,原因呢,你这是往回返,其实就是这块少了个减一啊,就刚才呢都是,呃,我们这个演示了一下,你这个出现这个问题的情况,你得回过去呢去翻,像这种错误的话呢,其实还是不太好排的啊,咱们原先原先说过就是说嗯,程序没有报任何的错误,然后呢,你执行那个结果跟你想的不一样。
22:03
那你呢,是不是就只能是回去这样走一下是吧,就成这样的情况了,或者呢,就是咱们得用这个debug了,Debug呢就是1.1行一行这样去走啊,目前的话呢,这个咱们还没有讲debug之前,那你就只能是自己呢,诶通过这个修改操作,你过来呢,一点点去看啊,因为刚才我们这个添加完以后呢,我们去显示用户列表的时候,这都没有问题的啊,就是我们修改的时候呢,出问题了,所以你这个错误点呢,肯定是从这个修改这块来。哎,一点点往下去走。哎,就能找到这个问题啊,行这块的话呢,嗯,要小心一点啊。
我来说两句