общедоступный класс Студент
private String name;
private String id;
private static double grade;
private Midterm midtermScore;
private FinalExam finalExamScore;
public Student() {
super();
}
public Student(String name, String id, Midterm midtermScore, FinalExam
finalExamScore) {
this.name = name;
this.id = id;
this.midtermScore = midtermScore;
this.finalExamScore = finalExamScore;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public double getGrade() {
grade = midtermScore.getMidtermScore() +
finalExamScore.getTotalScore();
return grade;
}
общедоступный класс Midterm
private int numberOfQuestions;
private int numberOfQuestionsCorrect;
private final double WEIGHT = 0.4;
private double midtermScore;
public Midterm(int numberOfQuestions, int numberOfQuestionsCorrect) {
super();
this.numberOfQuestions = numberOfQuestions;
this.numberOfQuestionsCorrect = numberOfQuestionsCorrect;
}
public int getNumberOfQuestions() {
return numberOfQuestions;
}
public void setNumberOfQuestions(int numberOfQuestions) {
this.numberOfQuestions = numberOfQuestions;
}
public int getNumberOfQuestionsCorrect() {
return numberOfQuestionsCorrect;
}
public void setNumberOfQuestionsCorrect(int numberOfQuestionsCorrect) {
this.numberOfQuestionsCorrect = numberOfQuestionsCorrect;
}
public double getMidtermScore() {
this.midtermScore =(numberOfQuestionsCorrect*100)/numberOfQuestions;
return midtermScore * WEIGHT;
}
общедоступный класс FinalExam
private double grammarScore;
private double spellingScore;
private double lengthScore;
private double contentScore;
private final double GRAMMARWEIGHT = 0.3;
private final double SPELLINGWEIGHT = 0.2;
private final double LENGTHWEIGHT = 0.2;
private final double CONTENTWEIGHT = 0.3;
private final double WEIGHT = 0.6;
private double totalScore;
public FinalExam(double grammarScore, double spellingScore, double
lengthScore, double contentScore) {
super();
this.grammarScore = grammarScore;
this.spellingScore = spellingScore;
this.lengthScore = lengthScore;
this.contentScore = contentScore;
}
public FinalExam(FinalExam[] finalScores) {
this.finalScores = finalScores;
}
public double getGrammarScore() {
return grammarScore;
}
public void setGrammarScore(double grammarScore) {
this.grammarScore = grammarScore;
}
public double getSpellingScore() {
return spellingScore;
}
public void setSpellingScore(double spellingScore) {
this.spellingScore = spellingScore;
}
public double getLengthScore() {
return lengthScore;
}
public void setLengthScore(double lengthScore) {
this.lengthScore = lengthScore;
}
public double getContentScore() {
return contentScore;
}
public void setContentScore(double contentScore) {
this.contentScore = contentScore;
}
public double getTotalScore() {
this.totalScore = (grammarScore*GRAMMARWEIGHT) +
(spellingScore*SPELLINGWEIGHT) + (lengthScore*LENGTHWEIGHT) +
(contentScore*CONTENTWEIGHT);
return totalScore*WEIGHT;
}
Основной класс
public static void main(String[] args) {
Student[] students = new Student[5];
String[] names = new String[5];
String[] ids = new String[5];
String[] letterGrades = new String[5];
Midterm m1 = new Midterm(50, 40);
FinalExam f1 = new FinalExam(100, 90, 100, 80);
Student s1 = new Student("Alan", "111", m1, f1);
names[0]=s1.getName();
ids[0]=s1.getId();
Midterm m2 = new Midterm(40, 26);
FinalExam f2 = new FinalExam(75, 80, 100, 60);
Student s2 = new Student("Bill", "222", m2, f2);
names[1]=s2.getName();
ids[1]=s2.getId();
Midterm m3 = new Midterm(45, 39);
FinalExam f3 = new FinalExam(89, 94, 85, 89);
Student s3 = new Student("Cate", "333", m3, f3);
names[2]=s3.getName();
ids[2]=s3.getId();
Midterm m4 = new Midterm(35, 30);
FinalExam f4 = new FinalExam(90, 45, 40, 68);
Student s4 = new Student("Dave", "444", m4, f4);
names[3]=s4.getName();
ids[3]=s4.getId();
Midterm m5 = new Midterm(100, 73);
FinalExam f5 = new FinalExam(45, 56, 48, 62);
Student s5 = new Student("Frank", "555", m5, f5);
names[4]=s5.getName();
ids[4]=s5.getId();
students[0] = s1;
students[1] = s2;
students[2] = s3;
students[3] = s4;
students[4] = s5;
String letterGrade;
int i = 0;
for(Student s : students) {
if(s.getGrade() >= 90.0) {
letterGrade = "A";
}else if(s.getGrade() >= 80.0) {
letterGrade = "B";
}else if(s.getGrade() >= 70.0) {
letterGrade = "C";
}else if(s.getGrade() >= 60.0) {
letterGrade = "D";
}else
letterGrade = "F";
letterGrades[i] = letterGrade;
i++;
}
int i = -1;
for(++i; i<=4; i++) {
if(i==4)
System.out.print(String.format("%s%4s %5s%s %5s%s %11s", "|",
names[i], "|", ids[i], "|", letterGrades[i],
"|"));
else
System.out.print(String.format("%s%4s %6s%s %5s%s %11s", "|",
names[i], "|", ids[i], "|", letterGrades[i],
"|"));
System.out.println();
}
}
Прежде всего, я прошу прощения, если мой код не отформатирован правильно, пожалуйста, не стесняйтесь редактировать мой формат, и я постараюсь изменить его соответствующим образом.
Недавно я начал программировать на Java и закончил задание по программированию на этой неделе.Задача попросила жестко закодировать информацию 5 учащихся (имя, идентификатор, промежуточный класс и итоговый класс).Затем программа должна была вывести имя и идентификатор студента с буквенной оценкой, которая представляла их gpa.
Мой профессор подчеркнул важность использования наследования и полиморфизма, но я действительно не понимаю, как я могу его использовать.На прошлой неделе мы рассмотрели композицию, наследование и полиморфизм, но для этого назначения я не видел способа упростить код, применяя что-либо, кроме композиции, без преднамеренного усложнения.
Я думаю, что проблема сводится к практике, и, поскольку мой опыт крайне ограничен, кто-нибудь может предложить какие-либо предложения о том, как я могу улучшить свой код?будь то наследование, полиморфизм или любой другой метод, который я могу практиковать?
Когда у меня будет больше времени и практики, я смогу лучше понять язык, и я решил, что одним из способов стать лучше, попросив отзыв о моем коде, я уверен, что есть место для улучшения.
К сожалению, мой профессор - занятой человек, и он не очень хорошо разбирается в электронных письмах, и часы обучения на этой неделе были отменены, поэтому я буду признателен за любые отзывы, даже если речь идет не о полиморфизме и наследовании.