学习总结
作者:互联网
学习总结
期中考试之后布置的几次PTA题目集、学习通作业相对于之前的多边形作业来说难度下降了许多,题量也不大,涉及的知识点也相对来说较少,但是对于基础不扎实的同学来说还是有很大的难度。后面几次大作业知识点主要涉及ArrayList、HashSet集合、内部类、javaFX控件、布局的使用、接口的实现、抽象类的使用、正则表达式的运用、迭代器的简单使用。
三次大作业都是和电信计费有关,在做第一次电信计费时会感觉有点难,因为给出的题目不完整,会对思维有影响、对一些暂时用不到的题干感到困惑,不过由于给出了类图导致难度大大下降,不然如果需要自己设计类的话,难度不比之前的大作业低。我一开始看完题目完全不知道从何处下手,只能一遍又一遍地看类图来寻找思路,最后终于根据类图找到了一点思路,然后思维逐渐打开,慢慢知道如何来写代码。
电信计费这道题根据类图能把大部分代码写出来,所以只要能看懂类图就比较简单了,然后只剩下最难的输入数据部分,要对输入、输出进行限制,输入可以通过正则表达式,输出不能重复,所以我们在输入的时候可使用HashSet()方法去掉重复项,然后在输出时将HashSet转化成ArrayList使用冒泡排序和Collections.swap()根据ArrayList中的号码大小对其中的元素进行排序。还有就是对时间的处理,用SimpleDateFormat来判断是否是合法时间,如果能根据我们给出的格式进行转化则是合法时间。总的来说,只要能看懂类图就成功了一半了。
public void record(ArrayList<User> users){ for (int i=0; i<users.size()-1; i++) { for (int j = 0; j <users.size()-1-i; j++) { if (Long.parseLong(users.get(j).getNumber())>Long.parseLong(users.get(j+1).getNumber())) { Collections.swap(users,j,j+1); } } }//对号码排序 for (int i=0;i<users.size();i++){ if(i!=users.size()-1) System.out.printf("%s %.1f %.1f\n",users.get(i).getNumber(),users.get(i).calCost(),users.get(i).getBalance()); else System.out.printf("%s %.1f %.1f",users.get(i).getNumber(),users.get(i).calCost(),users.get(i).getBalance()); } }
如果能做出第一次电信计费作业,之后的两次电信计费作业自然不在话下,只需要模仿第一次作业的代码就行。内部类那题也需要思考一下,有一点绕,需要在Shop类中的构造方法中给购物券赋值,然后在main方法中创建内部类InnerCoupons的对象时传入购物券的值,要特别注意创建内部类的格式。
import java.util.Scanner; public class Main { public static void main(String[]args){ Scanner s=new Scanner(System.in); Shop myshop=new Shop(); myshop.setMilkCount(s.nextInt()); Shop.InnerCoupons innerCoupons=myshop.new InnerCoupons(myshop.coupons50.value); innerCoupons.buy(); Shop.InnerCoupons innerCoupons1=myshop.new InnerCoupons(myshop.coupons100.value); innerCoupons1.buy(); } } class Shop { private int milkCount; public int getMilkCount() { return milkCount; } public void setMilkCount(int milkCount) { this.milkCount = milkCount; } class InnerCoupons{ public int value; public InnerCoupons(int value) { this.value=value; } public void buy(){ milkCount-=value/50; System.out.println("使用了面值为"+value+"的购物券进行支付\n"+"牛奶还剩"+getMilkCount()+"箱"); } } InnerCoupons coupons50; InnerCoupons coupons100; public Shop() { this.coupons50 =new InnerCoupons(50); this.coupons100 =new InnerCoupons(100); } }
我认为这几次的作业相比于多边形的那几次作业给我的收获更多,题目不会太难也不会特别简单,能够让我们运用新学的知识,能更好的掌握所学。通过这些作业,我学会了迭代器、HashMap、内部类、HashSet的使用,还发现之前作业用到的知识有点遗忘,内部类、抽象类还有接口掌握的不是很好,不知道何时使用。我认为上课可以在完成教学任务的同时,可以多解释一些我们这个阶段能够掌握的知识,但不强制要求学会,起到拓展视野的作用。
标签:总结,Shop,InnerCoupons,int,作业,value,学习,public 来源: https://www.cnblogs.com/big5gb/p/16353647.html