StudentAnswerSheet is #3 from the from the 2007 AP Computer Science A Free Response problems.

https://secure-media.collegeboard.org/secure/ap/pdf/computer-science-a/ap-2007-computer-science-a-free-response-questions.pdf

Part (a) getScore method

public double getScore(ArrayList<String> key)
{
    double score = 0;
    
    for(int i = 0; i < key.size(); i++)
    {
        if(answers.get(i).equals(key.get(i)))
            score += 1;
        else if( ! answers.get(i).equals("?") )
            score -= 0.25;
    }
    
    return score;
}

Part (b) highestScoringStudent method

public String highestScoringStudent(ArrayList<String> key)
{
    int maxIndex = 0;
    
    for(int i = 1; i < sheets.size(); i++)
    {
        if(sheets.get(i).getScore(key) > 
                sheets.get(maxIndex).getScore(key))
        {
            maxIndex = i;
        }
    }
    
    return sheets.get(maxIndex).getName();
}

This is a standard find the max problem. The code above follows the advice at finding the minimum or maximum and starts maxIndex at the index of the first value that could be the maximum. The loop starts at 1, since there is no need to compare the sheet at 0 to itself.

2007 AP CS Exam Free Response Solutions

Comments

Comment on StudentAnswerSheet