2008 Checker
<< 2008 OpossumCritter | APQuestionsTrailIndex | 2007SelfDivisor >>
Checker
/**
* This is based on Question 4 of the 2008 APCS A exam.
*
* @author Chris Thiel, OFMCap
* @version 8 May 2008
*/
public interface Checker
{
/**
* @param text a string to consider for acceptance
* @return true if this Checker accepts text, false otherwise
*/
boolean accept(String text);
}
CheckerDriver
/**
* Tests out your implementations
* @author Chris Thiel
* @version 8 May 2008
*/
public class CheckerDriver
{
public static void main(String[] args)
{
Checker broccoliChecker= new SubstringChecker("broccoli");
System.out.println("Part (a) Test:");
System.out.println("broccoliChecker.accept(\"broccoli\"):"+broccoliChecker.accept("broccoli"));
System.out.println("broccoliChecker.accept(\"I like broccoli\"):"+broccoliChecker.accept("I like broccoli"));
System.out.println("broccoliChecker.accept(\"carrots are great\"):"+broccoliChecker.accept("carrots are great"));
System.out.println("broccoliChecker.accept(\"Broccoli Bonanza\"):"+broccoliChecker.accept("Broccoli Bonanza"));
System.out.println("Part (b) Test:");
Checker bChecker = new SubstringChecker("beets");
Checker cChecker = new SubstringChecker("carrots");
Checker bothChecker = new AndChecker(bChecker, cChecker);
Checker aChecker = new SubstringChecker("artichokes");
Checker veggies = new AndChecker(bothChecker, aChecker);
System.out.println("Part (c) Test:");
Checker aChecker = new SubstringChecker("artichokes");
Checker kChecker = new SubstringChecker("kale");
Checker yummyChecker;
/* code to construct for part (c) */
System.out.println("yummyChecker.accept(\"chocolate truffles\")"+yummyChecker.accept("chocolate truffles"));
System.out.println("yummyChecker.accept(\"kale is great\")"+yummyChecker.accept("kale is great"));
System.out.println("yummyChecker.accept(\"Yuck: artichokes & kale\")"+yummyChecker.accept("Yuck: artichokes & kale"));
}
}
SubstringChecker (part a)
public class SubstringChecker impliments Checker
{
String word;
public SubstringChecker(String text)
{
word=text;
}
public boolean accept(String text)
{
boolean c= true;
if(text.indexOf(word)=-1)
boolean c= false;
return c;
}
}
or
public boolean accept(String text)
{
int location=text.indexOf(checkString);
if (location==-1)
return false;
else return true;
}
AndChecker (part b)
public class AndChecker implements Checker
{
private Checker a;
private Checker b;
public AndChecker(Checker one, Checker two)
{
a=one;
b=two;
}
public boolean accept(String text)
{
if (a.accept(text) && b.accept(text))
return true;
else return false;
}
}
NotChecker
public class NotChecker implements Checker
{
private Checker a;
public NotChecker(Checker one)
{
a=one;
}
/*
* returns true if and only if its Checker object
* does NOT accept the string
*/
public boolean accept(String text)
{
return !a.accept(text);
}
}
Solution for part (c)
yummyChecker = new AndChecker(new NotChecker(aChecker),
new NotChecker(kChecker));
