Java程序设计第二次作业Word格式.docx
- 文档编号:20427763
- 上传时间:2023-01-22
- 格式:DOCX
- 页数:15
- 大小:55.74KB
Java程序设计第二次作业Word格式.docx
《Java程序设计第二次作业Word格式.docx》由会员分享,可在线阅读,更多相关《Java程序设计第二次作业Word格式.docx(15页珍藏版)》请在冰豆网上搜索。
this.studentNumber=studentNumber;
this.studentName=studentName;
this.studentSex=studentSex;
this.studentAge=studentAge;
}
//使用Getter和Setter方法以及toString()方法,输出学生的关键信息
publiclonggetStudentNumber(){
returnstudentNumber;
}
publicvoidsetStudentNumber(longstudentNumber){
this.studentNumber=studentNumber;
publicStringgetStudentName(){
returnstudentName;
publicvoidsetStudentName(StringstudentName){
this.studentName=studentName;
publicStringgetStudentSex(){
returnstudentSex;
publicvoidsetStudentSex(StringstudentSex){
this.studentSex=studentSex;
publicintgetStudentAge(){
returnstudentAge;
publicvoidsetStudentAge(intstudentAge){
this.studentAge=studentAge;
publicStringtoString(){
return"
Student类中该学生的学号:
"
+getStudentNumber()+"
姓名:
+getStudentName()+"
性别:
+getStudentSex()+"
年龄:
+getStudentAge();
(2)设计思路:
这部分代码比较基础,即先定义一个Student类,类中定义了成员变量,再编写构造方法和成员方法。
写构造方法时,将形式参数studentNumber的值传递给成员变量studentNumber,变量前面加上一个this关键字,其指的就是这个对象的成员变量或者方法,而不是指成员方法的形式参数或者局部变量。
为此在上面这个代码中,this.studentNumber代表的就是对象中的成员变量,又叫做对象的属性。
而后面的studentNumber则是方法的形式参数。
代码this.studentNumber=studentNumber;
就是将形式参数的值传递给成员变量。
写成员方法时,Getter是对类对象的属性值的获得,Setter是对类对象的属性的赋值方法。
Java中的toString方法在Object类中已经存在。
由于Java中所有的类都继承自Object类,所以此方法存在于所有对象中,其作用是为了方便所有类的字符串操作。
查询Java的API文档后可以看到“建议所有子类都重写此方法”。
每次返回类实例,则用return语句来完成。
由以上方法便可输出学生的关键信息。
2.定义GraduateStudent继承Student类
classGraduateStudentextendsStudent//定义GraduateStudent类,并继承Student类
{
//增加属性:
专业、导师、score(某门课程成绩)
privateStringmajor;
privateStringteacherName;
privateintscore;
publicGraduateStudent(longstudentNumber,StringstudentName,StringstudentSex,intstudentAge,Stringmajor,StringteacherName,intscore)
super(studentNumber,studentName,studentSex,studentAge);
//调用父类的构造方法,一定要放在方法的首个语句
this.major=major;
//在构造方法中通过形参完成对成员变量的赋值操作
this.teacherName=teacherName;
this.score=score;
publicStringgetMajor(){
returnmajor;
publicvoidsetMajor(Stringmajor){
this.major=major;
publicStringgetTeacherName(){
returnteacherName;
publicvoidsetTeacherName(StringteacherName){
this.teacherName=teacherName;
publicintgetScore(){
returnscore;
publicvoidsetScore(intscore){
this.score=score;
//重写toString()方法,输出研究生相关信息
publicStringtoString()
return"
学号:
+getStudentNumber()+"
姓名:
+getStudentName()+"
性别:
+getStudentSex()+"
年龄:
+getStudentAge()+"
专业:
+getMajor()+"
导师:
+getTeacherName()+"
成绩:
+getScore();
这部分代码主要实现了类的继承,关键代码classGraduateStudentextendsStudent,在GraduateStudent类里写构造方法时,子类可以调用由父类声明的构造方法,但是必须在子类的构造方法中使用super关键字来调用,因为父类的构造方法中包括参数,则参数列表为必选项,用于指定父类构造方法的入口参数。
成员方法toString重写,即增加了新的成员变量,最后输出了研究生的关键信息。
3.创建多个GraduateStudent对象,存储于集合中,按学号从小到大的顺序向文件输出所有学生信息(每个学生信息占一行),并向文件输出这些学生课程成绩的平均值,以及成绩的最大值和最小值。
GraduateStudents1=newGraduateStudent(2012101,"
陈琦"
男"
21,"
通信工程"
傅松"
80);
GraduateStudents2=newGraduateStudent(2012105,"
崔雪娇"
22,"
郑瑾"
90);
GraduateStudents3=newGraduateStudent(2012106,"
董朝阳"
罗雨峰"
82);
GraduateStudents4=newGraduateStudent(2012110,"
方卉"
叶清"
85);
GraduateStudents5=newGraduateStudent(2012103,"
黄立明"
孟凡超"
GraduateStudents6=newGraduateStudent(2012116,"
李善超"
20,"
王建"
GraduateStudents7=newGraduateStudent(2012109,"
张磊"
宗恒"
97);
GraduateStudents8=newGraduateStudent(2012111,"
彭璐"
周华平"
92);
GraduateStudents9=newGraduateStudent(2012108,"
韩苗苗"
王玉丽"
81);
GraduateStudents10=newGraduateStudent(2012112,"
时小鑫"
胡晶"
List<
Student>
students=newArrayList<
();
//用一个数组来存放所要排序的对象
students.add(s1);
////把各个对象加到数组中去
students.add(s2);
students.add(s3);
students.add(s4);
students.add(s5);
students.add(s6);
students.add(s7);
students.add(s8);
students.add(s9);
students.add(s10);
Comparator<
comparator=newComparator<
()//实例化比较器
@Override
//比较学号,使学号按从小到大顺序输出
publicintcompare(Studentstu1,Studentstu2){
if(((GraduateStudent)stu1).getStudentNumber()>
((GraduateStudent)stu2).getStudentNumber()){
return1;
}elseif(((GraduateStudent)stu1).getStudentNumber()==((GraduateStudent)stu2).getStudentNumber()){
return0;
}else{
return-1;
};
Collections.sort(students,comparator);
////利用Collections类的静态方法sort进行排序
for(Studentstu:
students){
System.out.println("
+((GraduateStudent)stu).getStudentNumber()+"
\t姓名:
+stu.getStudentName()+"
\t性别:
+stu.getStudentSex()+"
\t年龄:
+stu.getStudentAge()+"
\t专业:
+((GraduateStudent)stu).getMajor()+"
\t导师:
+((GraduateStudent)stu).getTeacherName()+"
\t成绩:
+((GraduateStudent)stu).getScore());
int[]intArray={80,90,82,85,90,82,97,92,81,90};
GetArrayget=newGetArray();
get.getMaxArray(intArray);
get.getMinArray(intArray);
get.getAvgArray(intArray);
classGetArray
//求数组最大值
publicvoidgetMaxArray(int[]intArray){
intmaxArray=intArray[0];
for(inti=0;
i<
intArray.length;
i++){
if(intArray[i]>
maxArray)
maxArray=intArray[i];
成绩的最大值:
+maxArray);
//求数组最小值
publicvoidgetMinArray(int[]intArray){
intminArray=intArray[0];
if(intArray[i]<
minArray)
{
minArray=intArray[i];
成绩的最小值:
+minArray);
//求数组的平均值
publicvoidgetAvgArray(int[]intArray){
intsum=0;
intavg=0;
i++)
sum+=intArray[i];
}
avg=sum/intArray.length;
课程成绩的平均值:
+avg);
这部分代码编写起来稍有难度,使用了Java中的集合类List,Collection等,且Java的集合类包含在java.util包中,集合类只容纳对象。
先使用类型ArrayList集合定义ArrayList类型变量,用一个数组来存放所要排序的对象,然后把各个对象加到数组中去。
排序时,先实例化比较器,comparator可以看成一种算法的实现,在需要容器集合collection比较功能的时候,来指定这个比较器,这可以看成是一种设计模式,将算法和数据分离。
然后使用compare(a,b)方法,即根据第一个参数小于、等于或大于第二个参数分别返回负整数、零或正整数。
然后利用Collections类的静态方法sort进行排序。
以上完成了按学号从小到大的顺序排列对象。
建立数组后,利用选择排序的方法找到成绩的最大值,即先假设第一个同学的成绩最高,然后按顺序遍历依次和后面的同学的成绩比较,不断修改数组的下标,最后返回最大成绩值,同样利用选择排序找到成绩的最小值。
计算成绩平均值比较简单,即遍历数组求和,再将总和除以数组的长度就可得平均值。
(3)运行结果:
截图如下:
如图所示,按学号从小到大的顺序输出多个学生信息,成绩的最大值为97,最小值为80,成绩的平均值为86,运行结果正确。
附实现所有要求的整体代码:
(){
publicintcompare(Studentstu1,Studentstu2){
publiclonggetStudentNumber(){
returnstudentNumber;
this.studentNumber=studentNumber;
publicStringgetStudentName(){
returnstudentName;
this.studentName=studentName;
returnstudentSex;
this.studentSex=studentSex;
public
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Java 程序设计 第二次 作业
![提示](https://static.bdocx.com/images/bang_tan.gif)