Ben South
Ben South

Reputation: 13

How to return input from the ArrayList using JAVA

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

Upvotes: 1

Views: 164

Answers (3)

ghdalum
ghdalum

Reputation: 891

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

Upvotes: 0

Vi&#231;
Vi&#231;

Reputation: 356

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?

Upvotes: 0

rgettman
rgettman

Reputation: 178253

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.

Upvotes: 4

Related Questions