我似乎在理解如何处理一个特定的问题上有问题。
我需要写一个类来保存一个包含四个元素的数组。每个元素都有一个不同的方法。
例如,第一个元素是从另一个类继承信息,最初输入一个数字,然后返回该数字以及与该数字对应的字符(字母等级)。这两项都需要存储在该元素中。
下面是我的类,它接受输入(分数)并返回字母grade
package runit;
public class GradedActivity{
public int score;
public GradedActivity(int score)
{
this.score = score;
}
public void setScore(int s)
{
score = s;
}
public double getScore()
{
return score;
}
public char getGrade()
{
char letterGrade;
if (score>= 90)
letterGrade = 'A';
else if (score >= 80)
letterGrade = 'B';
else if (score >= 70)
letterGrade = 'C';
else if (score >= 60)
letterGrade = 'D';
else
letterGrade = 'F';
return letterGrade;
}
}
下面是我的主要类,目前只用于获取每个元素所需的单独分数
package runit;
import java.util.Scanner;
public class RunIt {
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int labScore;
int essayScore;
int finalExamScore;
System.out.print("Enter the students score for the lab: ");
labScore = keyboard.nextInt();
System.out.print("Enter the students score for the essay: ");
essayScore = keyboard.nextInt();
System.out.print("Enter the students score for the final exam: ");
finalExamScore = keyboard.nextInt();
GradedActivity a = new GradedActivity(labScore);
GradedActivity b = new GradedActivity(essayScore);
//below was used to make sure the GradedActivity class was working
System.out.println(a.getScore() + " " + a.getGrade());
System.out.println(b.getScore() + " " + b.getGrade());
}
}
下一部分是我似乎有问题的地方。我不确定我是否想得太多了,或者可能把它的一部分与JavaScript混淆了。基本上,每个元素方法都必须保存输入的分数和相应的字母等级。虽然我知道我可以很容易地在我的主类中创建单独的实例,比如
GradedActivity a = new GradedActivity(labScore);
另一个类中的整个数组让我困惑。
下面是数组
的类public class CourseGrades extends GradedActivity{
//I initially had private int[] grades, though I wasn't seeming to make any progress
enum grades {
lab,
essay,
finalExam,
};
private int lab;
private int essay;
private int finalExam;
public CourseGrades(int score, int lab, int essay, int finalExam) {
super(score);
this.lab = lab;
this.essay = essay;
this.finalExam = finalExam;
}
public void setLab(int score) {
this.lab = score;
}
public void setEssay(int score) {
this.essay = score;
}
public void setFinalExam(int finalExam) {
this.finalExam = finalExam;
}
//lastly, I need to be able to print out both the numeric and letter grade for each element
public String toString() {
return "Lab grade: " + lab + " Essay grade: " + essay + " Final Exam grade: " + finalExam;
}
}
我也尝试过使用CourseGrades c = new CourseGrades(labScore, essayScore, finalExam);
,但它需要第4个int(用于超级(分数))。
创建一个GradedActivity类的数组。
private GradedActivity[] grades;
像数组一样初始化它,
grades = new GradedActivity[4];
你像这样添加每个元素,假设你可以在for循环中设置你的分数。你也可以用数字0、1、2、3来表示你的4个等级。
grades[i] = new GradedActivity(score);
你像这样引用GradedActivity方法。
char c = grades[i].getGrade()