社区微信群开通啦,扫一扫抢先加入社区官方微信群
社区微信群
实验目的:
熟悉内部类的定义和使用,掌握内部类的使用规则
写一个Java程序,实现以下要求:
package experiment1;
import java.util.ArrayList;
import java.util.Collection;
public class Student {
public static void main(String[] args) {
// TODO 自动生成的方法存根
Student s1 = new Student("李红","女");
s1.inputScore("Java", "考查", 90, 85, 75, 80);
s1.inputScore("SQL ", "考试", 80, 90, 82, 75);
s1.inputScore("J2EE", "考查", 78, 70, 70, 71);
s1.printInfo();
System.out.println();
System.out.println("***************************");
System.out.println();
Student s2 = new Student("王晓明","男");
s2.inputScore("Java", "考查", 86, 67, 71, 70);
s2.inputScore("SQL ", "考试", 77, 70, 85, 66);
s2.inputScore("J2EE", "考查", 88, 74, 68, 80);
s2.printInfo();
}
String name;//姓名
String sex;//性别
// Subject[] subjects;
Collection<Subject> subject = new ArrayList<Subject>();
// 成员内部类 课程类
class Subject {
String subjectName;//课程名
String type;//课程类型
SubjectType subType = new SubjectType();//新建静态内部类
void setType(){
subType.typeName = type;
subType.setRatio();
};
int atten;//出勤
int assign;//作业
int lab;//实验
int finalExam;//期末
}
// 静态内部类 课程性质
static class SubjectType {
String typeName;//类型
double attenRatio;//出勤比例
static final double assignRatio = 0.1;//作业比例,静态final
static final double labRatio = 0.1;//实验比例,静态final
double finalRatio;//期末比例
void setRatio() {
//设置比例的方法
if ("考查".equals(typeName)) {
attenRatio = 0.2;
finalRatio = 0.6;
}else if ("考试".equals(typeName)) {
attenRatio = 0.1;
finalRatio = 0.7;
}
}
}
public Student() {
// TODO 自动生成的构造函数存根
}
public Student (String name, String sex) {
this.name = name;
this.sex = sex;
}
//导入学生成绩方法
public void inputScore(String name,String type,int atten,int assign,int lab,int finalExam){
Student s = new Student();
Student.Subject sub = s.new Subject();
sub.subjectName = name;
sub.type = type;
sub.setType();
sub.atten = atten;
sub.assign = assign;
sub.lab = lab;
sub.finalExam = finalExam;
subject.add(sub);
}
//打印方法
void printInfo(){
class calcScore{ //局部内部类
//用于计算总分
int calcTotal(Subject sb){
double a = sb.atten * sb.subType.attenRatio;
double b = sb.assign * SubjectType.assignRatio;
double c = sb.lab * SubjectType.labRatio;
double d = sb.finalExam * sb.subType.finalRatio;
return (int)(a+b+c+d);
}
}
calcScore cs = new calcScore();
System.out.println("姓名:"+name+" 性别:"+sex);
System.out.println("课程 "+"性质 "+"出勤 "+"作业 "+"实验 "+"期末 "+"总分 ");
System.out.println("===============================");
for(int i=0;i<subject.size();i++) {
Subject sb = ((ArrayList<Subject>) subject).get(i);
System.out.println(sb.subjectName+" "+sb.type+" "+sb.atten+" "+sb.assign+" "+sb.lab+" "+sb.finalExam+" "+cs.calcTotal(sb));
}
}
}
运行结果:
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!