Reputation: 13
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
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
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
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