1

我在 Uni 学习计算机科学,发现 Java 很难理解,我知道需要做什么,但如果有意义的话,我不知道如何编码?

我的任务是输出有多少学生通过和失败的考试,这是由用户输入完成的。它会询问姓名和标记,然后计算通过和失败的人数。现在详细信息保存在 a 中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

3 回答 3

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

于 2013-03-11T17:49:44.090 回答
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();
于 2013-03-11T19:06:39.590 回答
0

使用sortjava Collections 类的方法,将其传递Comparator给排序(按升序)标记,然后计数,直到您发现标记大于您的阈值。

这可能合适吗?

于 2013-03-11T17:52:10.643 回答