有没有办法将一个参数从一个类传递到一个数组中(我不确定如何正确地说它,所以让我用一个例子来试试)。
假设我有一个名为Lab
的类,并且在这个类中有一个名为grade
的实例变量,带有一个getter和setter。此外,还有一个阵列。
public class Lab {
private double grade;
private double[] array = new double[10];
public void setGrade(double grade) { //sets grades for lab reports
}
public double getGrade() {
return grade;
}
现在,从名为Teacher
的主要课程中,我想打电话给实验室并将学生成绩单独传递给setGrade
,并且对于参与参数的每个年级,我希望将这些成绩放在数组中,以便在后面的课程中(我将创建)我可以检索那些实验课程成绩。
扫描仪输入是我的第一个想法,但我只是想知道是否有其他方法可以使用getter,setter,constructors等来完成此操作。
答案 0 :(得分:1)
您可以使用ArrayList。这样你就可以做到以下几点:
private ArrayList<Double> grades = new ArrayList<>();
public void addGrade(double grade){
grades.add(grade);
}
每次拨打addGrade(双等级)时,等级都会被添加到“成绩”。
答案 1 :(得分:0)
如果您的Lab
课程必须持有多个成绩,那么它应该明确为
public class Lab {
private double[] studentGrades;
public void setStudentGrades(double[] grades) { //sets grades for lab reports
studentGrades = grades;
}
public double[] getStudentGrades() {
return studentGrades;
}
现在,在您的Teacher
课程中,您将收集本地数组中的成绩并使用setter将Lab
类对象上的值设置为
int numOfStudents = scanner.nextInt();
double[] grades = new double[numOfStudents];
for(i = 0; i < numOfStudents; i++) {
grades[i] = scanner.nextDouble();
}
lab.setStudentGrades(grades);
答案 2 :(得分:0)
因为您希望每次都将一个值传递给数组,所以需要跟踪可以安全地添加下一个值的位置
public class Lab {
private double grade;
private double[] array = new double[10];
private int insertPoint = 0;
public void setGrade(double grade) {
if (insertPoint < array.length) {
array[insertPoint] = grade;
insertPoint++;
}
}
现在,要获得一个值,您需要知道要获得哪个值...
public double getGrade(int index) {
double value = 0;
if (index >= 0 && < insertPoint) {
value = array[insertPoint];
}
return value;
}
另一种选择可能是传递你想要设置的索引......
public void setGrade(int index, double grade) {
if (index >= 0 && index < array.length) {
array[index] = grade;
}
}
或者您可以使用变量参数......
public void setGrade(double... grade) {
for (int index = 0; index < grade.length && index < array.length; index++) {
array[index] = grade;
}
这将允许您将单个值或多个值传递给同一方法...
Lab lab = new Lab();
lab.setGrade(1);
lab.setGrade(1, 2, 3, 4, 5);
double grades[] = new double[]{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
lab.setGrabe(grades);
请记住,在上面的示例中,每次调用setGrades
都会替换数组中的元素(最多为您传递的元素数)
使用某种List
虽然