2013-03-11 25 views
1

我正在学习Uni的计算机科学,并且发现Java很难让我头脑发热,我知道需要做什么但我无法解决如何编写代码感?如何使用JAVA返回来自ArrayList的输入

我有一个任务来输出有多少学生在考试中通过和失败,这是通过用户输入完成的。它会要求一个名字和标记,然后它会计算有多少人通过和失败。现在详细信息保存在ArrayList中,我只需提取那些失败的学生数。我已经完成了一半。

class Course 
{ 

    private ArrayList<Student> people = new ArrayList<Student>(); 

    public void add(Student s) 
    { 
     people.add(s); 
    } 
    //Return the number of students who failed (mark<40) 
    public int fail() 
    { 
     int count = 0; 
     for (int i=0; i< people.size(); i++); 
     int mark = people.get(i).getMark(); 
     { 
      if (mark < 40) { 
       count = count +1; 
      } 
     } 

     return count; 
    } 
} 

我知道这不正确,但它基本上存在吗?请帮忙吗?如果你需要更多的代码,请问! 感谢

回答

4

您需要从行的末尾删除;包含您for循环声明,并把你的int mark线以下括号内:

for (int i=0; i< people.size(); i++) 
{ 
    int mark = people.get(i).getMark(); 
    if(mark < 40){ 
     count = count +1; 
    } 
} 

一个for循环之后的分号表示整个块在for循环内重复运行;在for声明之后放置分号是常见的错误。

+0

唉唉非常感谢你@rgettman 此外,我如何才能找到的平均分和顶标? – 2013-03-11 18:21:28

0

使用java Collections类的sort方法,将它传递给Comparator以按顺序(按升序)标记,然后计数,直到找到该标记大于阈值。

这可能适合?

0

另外我如何找到平均分和最高分?

为了获得最高分,您创建了一个变量,每次找到更高的分数时都会替换它。如果你已经循环了,你可以通过将循环中的所有标记相加并将其除以全部人来找到平均值。在这里,我都在同一个循环中完成:

int totalMark = 0; 
int topMark = 0; 
for (int i=0; i< people.size(); i++) { 
    int mark = people.get(i).getMark(); 
    if (mark > topMark) { 
     topMark = mark; 
    } 
    totalMark += mark; 
} 
int averageMark = totalMark/people.size(); 
相关问题