• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

第三次blog作业

开发技术 开发技术 5小时前 4次浏览

一、  前言

第七次作业的难度不算很大,量也不算多,就两道题目,主要考察的知识点有arraylist动态数组的应用,和collections类中的方法直接排序,以及怎样实现comparable接口并重写compareto方法排序,并熟练掌握arraylist中的各种方法,并且对父类与子类之间的关系能灵活应用。

第八次作业的难度比第七次又要增加不少,不过题目的量不算太大,只有一道题,让我们设计一个atm机系统。老师在上课的时候已经为我们讲解了思路,并且为我们画好了类图,并且老师还讲到下次是这次作业的改良版,让我们尽量跟着他的思路,但是我还是用了我自己的方法,我觉得这次作业最要用到的就是对数据的处理,运用到的主要知识点有stringbuilder对象的应用,字符串中的equals方法的运用,如何将字符串转换为整型数据。

第九次作业就是第八次作业的进阶版,难度确实也要大上不少,不过因为题目还是一道,所以量也不算太多,这次考察的主要内容除第八次作业以外,还额外加了许多东西,例如switch case语句的运用,还有对数据进行更加仔细的处理。

二、  设计与分析     

题目集七7-1:这次的题目为图形卡片排序游戏,这次题目的主要设计思路为先定义一个抽象shape类,在里面定义号求面积和检验数据是否合法的方法,并且重写tostring方法用来进行输出。然后分别定义四个类来继承抽象shape类,圆,三角形,长方形,梯形,并且分别定义各自的私有属性,再重写对应的求面积方法和校验数据是否合法的方法。下一步定义一个类card用来实现comparable接口,并且创建一个shape对象,再重写compareto方法。之后再定义一个类dealcardlist,先定义一个arraylist数组cardlist,再运用for循环,如果输入为1则向里面添加一个圆对象,如果为2则添加一个三角形对象,依次进行下去,根据题目要求还要我们求出总面积,所以这时我们再写一个方法来求出总面积并输出,这里排序我们直接用sort来进行排序,最后再写一个show方法对结果按题目要求输出这道题就算完成了。

第三次blog作业

 

 第三次blog作业

 

 

题目集七7-2:这次的题目为图形卡片分组游戏,其实就是在上一次的题目中进行改动就好了。首先我们让shape类来实现comparable接口并重写compareto方法,然后还是一样的分别定义四个类来继承,不过这时我们要额外定义四个array list动态数组,并且将四个对象分别归类,例如圆对象放入第一个动态数组,三角形对象放入第二个动态数组,依次下去,接着还是定义一个求总面积的方法,并且运用sort方法对每个动态数组内的面积进行排序并输出,最后还要定义一个方法,求出每类对象的面积之和并排序,最后再定义一个show方法按题目要求输出即可。

第三次blog作业

 

 

第三次blog作业

题目集八:这次的题目为设计类似的atm机系统,首先我们按照题目要求输入数据,当输入为#时,停止输入,然后分别定义八张余额为10000的卡,接着将stringbuilder对象转换为字符串,先将字符串以换行符为界分割开并存入到一个数组里面,接着将所有的空格给去掉,根据题目的要求,用户可以进行两个操作,取款和查询余额,所以我们可以根据输入字符的多少来判断用户进行的是哪步操作,,此时再运用一个for循环对每行输入的数据进行操作,并且此时再将每行数据用空格分隔开并存入另一个数组,此时就是对这个数组进行操作,根据题目意思我们能知道这个数组的第一项是卡号,第二项是密码,第三项是atm机的号码,第四项则是存款或取款的数目,大于0取款,小于0存款,且取款的数目不能超过卡的余额,另外题目还规定建设银行和工商银行要区分开来,建设银行的atm卡号要和工商银行的区分,不允许跨行取款,最后再注意一下输出,这道题目就完成了。

第三次blog作业

 

 第三次blog作业

 

 

题目集九:这次题目还是atm机系统,不过却又在上一次的内容上进行了增加,首先,这次的题目又增加了几个用户,并且还增加了一个农业银行,还允许跨行取款,不过要付额外的手续费,且跟上次还有一点不同,上次的题目是只允许出现借记卡,不过这次题目难度有所加大,出现了信用卡,意思是现在可以透支取款,不过这次题目没要求存款,所以也算是稍微减小了一点题目难度。这次的思路我们还是跟着上一道题目就行,不过这次我们要定义十二张余额为10000的卡,不过我们要改进相应的方法,对应的银行对应相应的手续费,差不多进行这样,最后注意按照题目意思进行输出就好了。

第三次blog作业

 

 第三次blog作业

 

 

三、  采坑心得

      题目集七7-1:重写tostring方法进行输出可以节省不少代码。

第三次blog作业

 

 

                   求圆面积时Π不能用3.14表示,而是应该这样用。

第三次blog作业

 

 

                   由于对面积进行排序时按照题目意思是从大到小进行排序,所以重写compareto方法时,我们应该注意返回值。

第三次blog作业

 

 

                   直接用collections接口中的sort方法进行排序可以大大节省代码。

        题目集七7-2:注意这次的shape类也要实现comparable接口。

                   定义arraylist动态数组时,要注意里面存放的数据类型必须是对象类型,否则编译器会报错。

        题目集八:首先要注意一个用户的多个账号可能只对应与一个卡号,所以在取款之后应扣除同一张卡里的钱。开始进行数据的输入时,我们要注意这里只能用stringbuilder对象来输入,因为我们输入的字符串时随时变换的,而string类型的数据不能进行更改。另外我们还要注意这次的测试类型中有一点坑人的地方,因为我们在对每行数据进行处理时,是按照一个空格来分的,而题目的测试点输入的每行数据之间的间隔不止一个空格,所以我们应该先将每行数据中的多个空格替换为一个空格再进行分割。另外我们每行中输入的第三个数据是存款和取款的数目,但是它们这时是以字符串的形式出现的,所以当我们运用它们时,应该首先将它们转换为整型数据类型再进行相应操作。另外,如果出现余额不足或者卡号不对,密码不对时,我们进行相应输出后应该在后面再加上一行代码,system.exit(0),这样才代表程序安全退出。另外我们还要注意客户到底进行的是哪步操作,而这我们可以根据输入字符串的大小来判断。

        题目集九:首先这次题目是运行跨行取款的,但是要支付对应的手续费,这时我们就要仔细思考这个手续费是怎么支付的,根据题目意思atm机的号码对应与哪家银行,手续费就按照这家银行的手续费进行计算。其次就是这道题目规定了代码的数量不能超过22k所以我们再写代码时,尽量多使用一些方法,这样可以防止代码的长度超出题目要求。最后便是信用卡的取款问题,如果取款的数目超出信用卡的余额时,信用卡的手续费则是用超出余额的那部分进行计算,而如果卡里的余额本来就是负数的话,则应该用取款的数目来进行手续费的计算。

四、  改进建议

题目集七7-1:直接在shape类中重写tostring方法进行输出,可以节省代码长度。重写compareto方法时,要根据题目意思写,因为题目要求是从大到小进行排序。

题目集七7-2:这次让shape类也实现comparable接口。注意到comparable接口为泛型接口,要带上对象。

题目集八:在判断卡号、密码、atm号是否相等时,用equals来判断比直接用==号判断较好,因为==号比的是地址。对每次用户的操作进行响应时的一系列操作尽量放入到一个方法中,这样能够大大缩短代码长度。

题目集九:对每次卡号进行判断操作时,可以将ifelse语句改成switchcase语句,这样可以大大减少代码的运行内存。另外题目有一个测试点每行的数据多用了一个空格分割,希望下次能做到统一。并且写操作的相应方法时,可以多放几个参数,因为有些只是用户的名字不一样,其他操作都是一模一样的,所以这样写可以少写几个方法。

五、  总结

通过这次的题目我又掌握了许多知识,例如抽象类和抽象方法的相关知识,还有接口的相关运用,比如comparable接口和其对应的compareto方法,还有arraylist动态数组的相关应用,并了解接口是因为一个类只能继承一个父类,所以我们引入了接口的相关概念来方便我们。


程序员灯塔
转载请注明原文链接:第三次blog作业
喜欢 (0)