Checker is #4 from the from the 2008 AP Computer Science A Free Response problems.

https://secure-media.collegeboard.org/apc/ap08_comp_sci_a_frq.pdf

Part (a) SubstringChecker class

public class SubstringChecker implements Checker
{
    private String str;
    
    public SubstringChecker(String str)
    {
        this.str = str;
    }
    
    public boolean accept(String text)
    {
        return text.indexOf(str) != -1;
    }
}

See Class writing order for a technique to respond to AP CS FR that request an entire class.

Part (b) AndChecker class

public class AndChecker implements Checker
{
    private Checker c1, c2;
    
    public AndChecker(Checker c1, Checker c2)
    {
        this.c1 = c1;
        this.c2 = c2;
    }
    
    public boolean accept(String text)
    {
        return c1.accept(text) && c2.accept(text);
    }
}

Part (c) Assignment to yummyChecker

Checker notA = new NotChecker(aChecker);
Checker notK = new NotChecker(kChecker);
yummyChecker = new AndChecker(notA, notK);

A common mistake on this part is creating a single NotChecker.

The Checker created below accepts strings that do not contain "artichokes" or that do not contain "kale", which is not the requested behavior.

new NotChecker(new AndChecker(aChecker, kChecker))

2008 AP CS Exam Free Response Solutions

Help & comments

Get help from AP CS Tutor Brandon Horn

Comment on Checker