1...关于代码逻辑的反思
目的:如果表名和指定的 参数(str)一样 就跳出程序 如果不一样,就在在最后面新建一个表,且名字=str
代码如下,
第一个错误的原因是,
正确的逻辑是: 循环判断所有的表名字 之后 才执行 新建表的动作
错误的逻辑是:循环第一张表,判断一下,一样就跳出,不一样就新建错误就是,万一和str同名的表在后面呢,那么前面已经新建了咋办。
错误程序的第二个错误是:原表中的确是没有和str重名的,(此处懒得截图了)。执行后 的确新建了一个和str重名的表,但是,程序继续循环,又新建了表,名称是系统的codename,然后报错。为啥报错,前一次已经新建了一个str同名的,这次执行到,sheets(sheets.count).name=str ,这句话的时候,咋办。自然是程序自己把自己杀了。
2.....正确的程序,正确在两点,,
2.1....把判断和新建两个动作分开 2.2.....采用标记的方法,不论是boolean 还是k 他们的值 都是起到标记的作用。
3......前面说到了codename
下图中,括号里面的是sheets.name, 括号外面的是codename. 如果我们没有对表命名,那么,sheets.name等于codename .
需要注意的是 如果我们删除了一张表,比如,sheets3,后面我们新建表,是不会新建成sheets3,而是sheets4。相当于损失了sheets3这个名字。