参数,Setter和Getters

时间:2015-02-20 02:47:01

标签: java

有没有办法将一个参数从一个类传递到一个数组中(我不确定如何正确地说它,所以让我用一个例子来试试)。

假设我有一个名为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等来完成此操作。

3 个答案:

答案 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虽然

会更简单