Java内部类例题

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验一:面向对象编程—内部类

一、实验目的:

熟悉内部类的定义和使用,掌握内部类的使用规则、枚举的定义和使用。

二、内部类

1、实验要求:

写一个Java程序,实现以下要求:

⏹学生参加某课程的考试,课程类型分为考试课和考查课。

⏹考试课最终成绩计算方法:出勤*10%+作业*10%+实验*10%+期末*70%

⏹考查课最终成绩计算方法:出勤*20%+作业*10%+实验*10%+期末*60%

2、实验运行效果:

3、程序结构:

import java.util.*;

public class inclassTest

{

public static void main(String[] args)

{

Student s1 = new Student("李红","女");

s1.inputSubject("Java","考查",90,85,75,80);

s1.inputSubject("SQL ","考试",80,90,82,75);

s1.inputSubject("J2EE","考查",78,70,65,70);

s1.printInfo();

System.out.println();

System.out.println("************************************************");

System.out.println();

Student s2 = new Student("黄晓明","男");

s2.inputSubject("Java","考查",86,67,71,70);

s2.inputSubject("SQL ","考试",77,70,85,66);

s2.inputSubject("J2EE","考查",88,74,68,80);

s2.printInfo();

}

}

class Student //学生类

{

private String name;//姓名

private String sex;//性别

//private ArrayList<Subject> subject = new ArrayList<Subject>();

private Collection<Subject> subject = new ArrayList<Subject>();

public Student()

{

}

public Student(String n,String s)

{

= n;

this.sex = s;

}

//导入学生成绩方法

public void inputSubject(String name,String type,int ats,int ass,int ls,int fs)

{

Student s = new Student();

Student.Subject sub = s.new Subject(); //新建成员内部类

sub.subName = name;

sub.type = type;

sub.setType();

sub.attentScore = ats;

sub.assignScore =ass;

bScore = ls;

sub.finalScore = fs;

subject.add(sub);

}

private class Subject //课程类

{

String subName;//课程名

String type;//课程类型

SubjectType subType = new SubjectType();//新建静态内部类void setType()

{

subType.typeName = type;

subType.setRatio();

}

int attentScore;//出勤分数

int assignScore;//作业分数

int labScore;//实验分数

int finalScore;//期末分数

}

private static class SubjectType //课程性质类

{

String typeName; //课程性质名称(考查课/考试课)

double attenRatio; //出勤比例

static final double assignRatio = 0.1; //作业比例

static final double labRatio = 0.1; //实验比例

double finalRatio; //期末比例

void setRatio() //根据课程性质设置比例的方法

{

if("考查".equals(typeName))

{

attenRatio = 0.2;

finalRatio = 0.6;

}else if("考试".equals(typeName))

{

attenRatio = 0.1;

finalRatio = 0.7;

}

}

}

public void printInfo()

{

class CalcScore //计算成绩类

{

public int calcScore(Subject sub)

{

return (int)(sub.attentScore * sub.subType.attenRatio + sub.assignScore*sub.subType.assignRatio+bScore*bRatio+sub.finalScore*su b.subType.finalRatio);

}

}

CalcScore cs =new CalcScore();

System.out.println("姓名:"+name+" 性别:"+ sex);

System.out.println("课程"+"性质"+"出勤"+"作业"+"实验"+"期末"+"总分");

System.out.println("===============================================");

/*

int size = subject.size();

for(int i=0;i<size;i++)

{

Subject sub =subject.get(i);

System.out.println(sub.subName+" "+sub.type+" "+sub.attentScore+" "+sub.assignScore+" "+bScore+" "+sub.finalScore+" "+cs.calcScore(sub));

}

*/

Iterator<Subject> i = subject.iterator();

while(i.hasNext())

{

Subject sub =i.next();

System.out.println(sub.subName+" "+sub.type+" "+sub.attentScore+" "+sub.assignScore+" "+bScore+" "+sub.finalScore+" "+cs.calcScore(sub));

}

}

}

相关文档
最新文档