如何使用外部参数更改数组中元素的值?

时间:2017-11-02 20:15:59

标签: java arraylist methods bluej

我有两个课程LabClassStudent,学生在课堂上注册并获得成绩。

我使用以下内容将Student称为LabClass作为ArrayList:

private List<Student> students;

现在,我希望能够在每个学生注册后单独为每个学生分配成绩。

我已经在Student课程中创建了一个方法来分配成绩,并试图在LabClass中调用它,但它没有成功。

Student中的代码如下:

public void grade(int marks){
    grades = marks;
}

我尝试使用以下代码在LabClass内调用它:

public void giveGrades(){
   for(Student student : students){
       student.grade(int marks);
   }
}

但是我得到了错误&#34; .class expect&#34;。我的代码出了什么问题?

我是否应该使用数组的set命令来更改元素的值?如果是这样,我应该如何编写它以便它可以从参数中获取外部值?另外,如何指定要更改元素的哪个值?

1 个答案:

答案 0 :(得分:1)

首先让我们澄清一些概念。正如其他提到的,这段代码:

public void giveGrades(){
   for(Student student : students){
       student.grade(int marks);
   }
}

不起作用,因为当您使用某种方法时(参数在声明时),您不能设置参数的类型。所以第一个&#34;修复&#34;这将是:

public void giveGrades(){
   for(Student student : students){
       student.grade(marks);
   }
}

现在的问题是:什么是商标?它没有在任何地方定义。让我们假设我们确实定义了它并且它的值是3.前面的代码为所有学生分配3作为等级。即使&#34;标记&#34;这也不太现实。是一个我们以某种方式作为参数接收的int。我们可能想要每个学生的成绩,这意味着我们需要一个列表。因此,我们想要一个参数,其中包含我们要分配给学生的成绩列表:ArrayList<Integer>成绩(如果需要,您可以稍后将其更改为Double,但想法是相同的)。在这种情况下,我们需要遍历学生列表中的每个元素,并从列表成绩中分配一个元素。像这样:

您有一份学生列表students: <s1, s2, s3, s4>

您有成绩列表grades: <g1, g2, g3, g4>

您需要从列表中为每个学生分配一个成绩:s1.grade(g1), s2.grade(g2), s3.grade(g3), s4.grade(g4)

我们可以用for来实现,但允许我们对两个列表进行迭代。一种可能的方式(有更多软化的方式):

public void giveGrades(ArrayList<Integer> grades){
   for(int i = 0; i < students.size(); i++){
       students.get(i).grade(grades.get(i))
   }
}

从Java的角度来看。现在,根据您的评论,您需要一个外部参数,并提到bluej的使用。在问题How do I enter parameters for an ArrayList in BlueJ?中,您可以更好地了解如何将参数传递给方法。

相关问题