下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JAVA实验报告信通院28班2012210773一:设计思路:我们需要先定义一个student类,然后在类中定义成员变量以及构造方法,利用构造方法对其进行初始化,然后定义一个getter和setter分别实现对类对象get到对象的属性,并利用setter的方法对其进行set,另外有toString的成员方法,来对其转化为字符串输出。第二步我们需要定义一个Graduatestudent的子类来继承父类student,那么我们想到我们用extends就可以实现继承,在整个过程,我们需要想到对于子类中和父类相同的部分,我们可以直接用super来继承,对于子类中那些父类没有定义的地方我们需要加进去,在题目中要求我们加入两个属性,那么我们只需要用同样的构造方法,在后面传入新加入的属性并对其进行构造即可。对于父类中的方法与子类中想用的不同,那么这个时候我们需要重写方法toString(),重写的方法是:将方法命名为与父类相同的类方法名称,然后对其进行重写,写入我们想要的方法。第三步,我们需要创建多个Graduatestudent的对象,然后将它加到一个集合当中,我的思路是将之加入Arraylist集合,用add的方法将之加入即可,然后通过写入一个comparator来控制其排序的方式,最后调用Collections.sort(list,comparator),即可完成我们想要的排序(即根据学号进行排序),然后对Arraylist进行遍历即可输出全部的对象。第四步需要我们将分数的最大值和最小值以及平均值输出,那么我们知道我们仍然可以用第二步中同样的方法写入一个comparator1,来实现对对象分数的排序,那么我们只需要再调用SORT即可实现一个新的Arraylist,然后我们输出list.get(0)和list.get(list.size()-1)即可输出最大值和最小值,平均值只需要把所有的score放入一个数组array相加之后处以array的长度length即可得出。输出到文件:只需要用bufferedWriter方式将结果显示在一个txt文件里即可。二:关键代码及注释分析:1. student1类的构造方法:student1(intage,intnumber,Stringname,Stringgenral){///传入形参对成员变量赋值 this.age=age; this.number=number; =name; this.genral=genral; }2.getter和setter的方法:(只举getAge和setAge为例:)publicintgetAge(){ returnage; }publicvoidsetAge(intage){ this.age=age; }3.继承类Graduatestudent重写父类方法的实现:publicGraduatestudent(intage,intnumber,Stringname,Stringgenral,Stringdepartment,Stringteacher,intscore) { super(age,number,name,genral);//与父类相同的属性直接继承 this.department=department;//父类中没有的属性则需用形参给变量赋值 this.teacher=teacher; this.score=score; }publicStringtoString(){//定义了与父类中toString方法同名的子类方法,说明是在子//类中重写类方法。 return"number="+number+",name="+name+",age="+age+",genral="+genral+",department="+department+",teacher="+teacher+",score="+score; }4.实现按学号排序:Comparator<Graduatestudent>comparator=newComparator<Graduatestudent>() { publicintcompare(Graduatestudents1,Graduatestudents2) { returns1.number-s2.number;} //排序方法,比较传入的参数,按学号从小到大的顺序排列 };创建Graduatestudent对象并将之加入到集合当中的代码:ArrayList<Graduatestudent>list=newArrayList<Graduatestudent>();Graduatestudentstu4=newGraduatestudent(18,1,"susan","female","IT","wang",91);Graduatestudentstu6=newGraduatestudent(21,5,"tom","male","cs","wang",83);Graduatestudentstu7=newGraduatestudent(18,6,"simon","male","IT","zhang",80);Graduatestudentstu1=newGraduatestudent(17,2,"andy","male","biology","li",90);Graduatestudentstu2=newGraduatestudent(18,4,"julie","female","philosophy","song",30);Graduatestudentstu3=newGraduatestudent(20,3,"john","male","IT","qu",92);////创建多个Graduatestudent对象 list.add(stu4);list.add(stu6); list.add(stu7);list.add(stu1); list.add(stu2);//用add实现向list中添加对象学生课程成绩的平均值,以及成绩的最大值和最小值的计算方法:平均值算法:doublea=0; int[]array={stu4.score,stu6.score,stu7.score,stu1.score,stu2.score,stu3.score};////对array数组的初始化,即将所有对象的score放入array中 for(inti=0;i<array.length;i++) {a=a+array}[i];} //遍历array对其实现相加求和 doubleaverage=a/array.length; //除以总数得到平均值 System.out.println("averageresult:"+average);最大值最小值算法:bw1.write("thehighestgradeis:"+list.get(0).score+"\r"+"\n"+"thelowestgradeis:"+list.get(list.size()-1).score+"\r"+"\n"+"theaveragegradeis:"+average+"\r"+"\n");/////////只需要用list.get(i)的方法即可以取出list中对象的内容,那么我们只需要取出/////经过排序的第一个对象的score和最后一个对象的score即可以得到最大值和最小值。根据对象分数属性排序的方法实现:Comparator<Graduatestudent>comparator1=newComparator<Graduatestudent>(){publicintcompare(Graduatestudents1,Graduatestudents2){returns2.score-s1.score;/////////根据分数的大小来从小到大排序};输出文件算法:Try{fw=newFileWriter("E:\\student.txt",true); //new一个将要写入内容的txt文件 bw=newBufferedWriter(fw,100); bw1=newBufferedWriter(fw,140); for(Graduatestudentgraduatestudent:list{ bw.write(graduatestudent+""+"\r"+"\n");//将传入的参graduatestudent//写入到文件当中 } bw1.write("thehighestgradeis:"+list.get(0).score+"\r"+"\n"+"thelowestgradeis:"+list.get(list.size()-1).score+"\r"+"\n"+"theaveragegradeis:"+average+"\r"+"\n"); //输出最大值最小值和平均值到文件当中 flag=true; }catch(IOExceptione){ System.out.println("writefilewrong"); //写入文件有错时要catch到异常 flag=false; }finally{ ///最终不管怎样都会执行的语句 if(bw!=null){ bw.flush
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 招标文件范本编写技巧示例
- 招标文件中的方式招标注意事项说明
- 2024建筑安装工程合同建筑安装工程经营范围
- 时尚品牌的社会责任与公益活动考核试卷
- 煤炭劳动安全合同范例
- 有效旅游合同范例
- 清包工合伙合同模板
- 泥土供货合同范例
- 水稻代加工合同模板
- 现场打包采购合同模板
- 【产业图谱】2024年青岛市重点产业规划布局全景图谱(附各地区重点产业、产业体系布局、未来产业发展规划等)
- 中药药品注册法规考核试卷
- 期中测试卷-2024-2025学年统编版语文六年级上册
- 初中语文2024届中考修改病句选择题练习(共15道-附参考答案和解析)
- 中煤科工集团信息技术有限公司招聘笔试题库2024
- 2024年武汉城投集团公开招聘【151人】高频500题难、易错点模拟试题附带答案详解
- 医院消防安全培训课件(完美版)
- 企业级SaaS软件服务合同
- 沈阳音乐学院艺术学院毕业实习管理办法
- 8.2金属的化学性质第1课时金属村趣味运动会九年级化学人教版下册
- 工程竣工验收(消防查验)报告消防专项-全套表格
评论
0/150
提交评论