第九次实验(2)

2019-04-02 23:11

int total = 0;

double average = 0;

for (int i = 0; i < CourseNo; i++) {

total=total+courses[i];//代码4 // 累加各门课程成绩 };

average = total / CourseNo;

if (average>=80&&average<100) courseGrade = \优秀\

else if (average>=70&&average<80) courseGrade = \良好\ else if (average>=60&&average<70) courseGrade = \一般\ else if (average>=50&&average<60) courseGrade = \及格\ else courseGrade = \不及格\ } }

class Postgraduate extends Student { public Postgraduate(String name) { super(name); type = \研究生\ }

public void calculateGrade() { int total = 0;

double average = 0;

for (int i = 0; i < CourseNo; i++) { total += courses[i]; };

average = total / CourseNo;

if (average>=90&&average<100) courseGrade = \优秀\

else if (average>=80&&average<90) courseGrade = \良好\ else if (average>=70&&average<80) courseGrade = \一般\ else if (average>=60&&average<70) courseGrade = \及格\ else courseGrade = \不及格\ } }

public class Polymorphism {

public static void main(String[] args) { Student[] students = new Student[5];

students[0] = new Undergraduate(\陈建平\

students[1] = new Undergraduate(\鲁向东\ students[2] = new Postgraduate(\匡晓华\ students[3] = new Undergraduate(\周丽娜\

students[4] = new Postgraduate(\梁欣欣\代码5 // 创建姓名为梁欣欣的Postgraduate对象students[4]

for (int i=0; i<5 ;i++) {

students[i].setCourseScore(0,87); students[i].setCourseScore(1,90); students[i].setCourseScore(2,78); }

for (int i=0; i<5 ;i++) {

students[i].calculateGrade(); }

System.out.println(\姓名\类型\成绩\ System.out.println(\

for (int i=0; i<5 ;i++) {

System.out.println(students[i].getName( )+\ students[i].getType( )+\ students[i].getCourseGrade( )); } } }

3、结果

4、练习

(l) 在 Polymorphism 类中有一个循环语句用来计算每个学生的成绩等级 for(int i=0;i<5;i 十 +){

student[i].calculateGrade(); }

请问这里的 calculateGrade() 方法是按照研究生的标准还是按照本科生的标准来计算的。 当对象是研究生时按照研究生的标准,是本科生按照本科生的标准来计算 (2) 现在请在程序 Polymorphism 类的 main() 方法中添加如下的语句 Student st=new Student (\李明 \

此时编译是否会报错 , 如有错误 , 请解释原因。 abstract类不能用new运算符创建对象

(3) 在程序中要判断 student[i] 中存放的究竟是 Undergraduate 对象还是 Postgraduate对象 , 只需要调用 student[i].getType() 方法即可 , 然而 Java 提供了一个 instanceof 运算也可以完成这一任务 , 它能判断出一个对象所属的类 , 请将以下代码添加到程序中进行测试。

for (int i=0;i<5;i++){

if(students[i] instanceof Undergraduate)

System.out.println(students[i].getName()+\是本科生 \else

System.out.println(students[i].getName()+\是研究生 \

(4)现在请模仿本程序 , 新增一个高中生类 , 它计算成绩等级的标准采用如下方法 , 然后 在主程序中测试并使用它。 80~100 好 60~80 中 60 以下 差

class High extends Student { public High(String name) { super(name); type = \高中生\ }

public void calculateGrade() { int total = 0;

double average = 0;

for (int i = 0; i < CourseNo; i++) { total += courses[i]; };

average = total / CourseNo;

if (average>=80&&average<100) courseGrade = \好\

else if (average>=60&&average<80) courseGrade = \中\ else courseGrade = \差\ } }

实验三

1、分别编写四个类Point,Point2D,Point3D,Test来表示一维、二维和三维的点及测试类,使之满足下列要求:

(1) Point类的成员变量和成员方法如下所示: 成员变量 int x;

成员方法 ①构造函数Point(int x),实现对成员变量x的初始化 ② void offset(int a)实现对一维点x坐标的平移

③ double distance(Point p)计算当前点到一维点p的距离 (2) Point2D类是Point类的直接子类,其成员变量和成员方法如下所示:

成员变量 int x,y;(分别为二维空间的X,Y方向坐标),x可从父类继承。 成员方法 ①构造函数Point2D(int x, int y),实现对成员变量x,y的初始化,可先调

用父类的构造函数super(x),实现对x坐标的初始化。

② void offset(int a, int b)实现对二维点坐标的平移,可先调用父类的offset函数实现对x坐标的平移。

③ double distance(Point p)覆盖父类的距离函数,计算当前点到二维点p的距离

(3) Point3D类是Point2D类的直接子类,其成员变量和成员方法如下所示:

成员变量 int x,y,z;(分别为三维空间的X,Y,Z方向坐标),x,y可从父类继承。 成员方法 ①构造函数Point3D(int x, int y,int z),实现对成员变量x,y,z的初始化,

可先调用父类的构造函数super(x,y),实现对x ,y坐标的初始化。

② void offset(int a, int b,int c)实现对三维点坐标的平移,可先调用父类

的offset函数实现对x,y坐标的平移。

③ double distance(Point p)覆盖父类的距离函数,计算当前点到三维点p的距离

(4)在测试类Test的主函数main()中实例化两个Point2D的对象p2d1,p2d2,打印出它们之间的距离,再实例化两个Point3D的对象p3d1,p3d2,打印出他们之间的距离。 2、代码 class Point{ int x;

Point(int x){ this.x=x; }

void offset(int a){ x=x+a; }

double distance(Point p){

return Math.abs(this.x- p.x); } }

class Point2D extends Point{ int x,y;

Point2D(int x, int y){ super(x); //this.x=x; this.y=y; }

void offset(int a, int b){ super.offset(a); y=y+b; }

double distance(Point p){ return p.x),2)+Math.pow(Math.abs(this.y-y),2)); } }

class Point3D extends Point2D{ int x,y,z;

Point3D (int x, int y,int z){ super(x,y); this.z=z; }

void offset(int a, int b,int c){ super.offset(a,b); z=z+c; }

Math.sqrt(Math.pow(Math.abs(this.x-


第九次实验(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:气质联用仪(岛津GCMS-QP2010)操作规程

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: