1

I am studying Computer Science at Uni and am finding Java quite hard to get my head around, I know what needs to be done but I cant work out how to code it if that makes sense?

I have a task to output how many students passed and failed on their exams, this is done by User Input. It will ask for a name and mark and then it will calculate how many people have passed and failed. Now the details are held in a ArrayList and I simply need to extract that number of students that have failed. I have half done it.

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;
    }
}

I know this isnt correct but its basically there? Any help please? If you need anymore code just ask! Thanks

3 Answers 3

4

You need to remove the ; from the end of the line containing your for loop declaration and place your int mark line inside the following braces:

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

A semicolon after a for loop represents the entire block to run repeatedly inside a for loop; it's a common mistake to place a semicolon after a for statement.

Sign up to request clarification or add additional context in comments.

1 Comment

Ahhh thank you very much @rgettman Also how would I find the average mark and the top mark?
0

use the sort method of java Collections class, pass it a Comparator to order (in ascending order) the mark and then count until you find that mark is greater then your threshold.

could this be suitable?

Comments

0

Also how would I find the average mark and the top mark?

For getting the top mark you create a variable which you replace each time a higher mark is found. If you are already looping you can find the average by summing all marks in a loop and divide it by total people. Here I have done both in the same loop:

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();

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.