2012 Horse Barn
<< 2012 RetroBug | APQuestionsTrailIndex | 2012 GrayImage >>
Click here to see the questions from 2012
Horse.java
public interface Horse
{
/** @return the horse's name */
String getName();
/** @return the horse's weight */
int getWeight();
// There may be methods that are not shown.
}
HorseBarn.java
public class HorseBarn
{
/** The spaces in the barn. Each array element holds a reference to the horse
* that is currently occupying the space. A null value indicates an empty space.
*/
private Horse[] spaces;
/** Returns the index of the space that contains the horse with the specified name.
* Precondition: No two horses in the barn have the same name.
* @param name the name of the horse to find
* @return the index of the space containing the horse with the specified name;
* -1 if no horse with the specified name is in the barn.
*/
public int findHorseSpace(String name)
{
/* to be implemented in part (a) */
}
/** Consolidates the barn by moving horses so that the horses are in adjacent spaces,
* starting at index 0, with no empty space between any two horses.
* Postcondition: The order of the horses is the same as before the consolidation.
*/
public void consolidate()
{
/* to be implemented in part (b) */
}
// There may be instance variables, constructors, and methods that are not shown.
public HorseBarn(int size)
{
spaces=new Horse[size];
}
public void add(int i, Horse h)
{
spaces[i]=h;
}
public void remove(int i)
{
spaces[i]=null;
}
public String toString()
{
String s1="", s2="", s3="";
for (int i=0;i<spaces.length;i++){
s1=s1+String.format("[ %7d ]", i);
if(spaces[i]==null){
s2=s2+String.format("[ %7s ]", "null");
s3=s3+String.format("[ %7s ]", " ");
}else {
s2=s2+String.format("[ %7s ]", spaces[i].getName());
s3=s3+String.format("[ %7d ]", spaces[i].getWeight());
}
}
return s1+"\n"+s2+"\n"+s3;
}
}
Palomino.java
class Palomino implements Horse
{
private String name;
private int weight;
public Palomino(String name, int weight)
{
this.name=name;
this.weight=weight;
}
@Override
public String getName() {
return name;
}
@Override
public int getWeight() {
return weight;
}
}
HorseBarnTester.java
public class HorseBarnTester
{
public static void main(String[] args)
{
HorseBarn sweetHome = new HorseBarn(7);
sweetHome.add(0, new Palomino("Trigger", 1340));
sweetHome.add(2, new Palomino("Silver", 1210));
sweetHome.add(3, new Palomino("Lady", 1575));
sweetHome.add(5, new Palomino("Patches", 1350));
sweetHome.add(6, new Palomino("Duke", 1410));
System.out.println("Part A\n"+sweetHome);
System.out.println("sweetHome.findHorseSpace(\"Trigger\") should return 0 ");
System.out.println("your code returns "+sweetHome.findHorseSpace("Trigger"));
System.out.println("sweetHome.findHorseSpace(\"Silver\") should return 2 ");
System.out.println("your code returns "+sweetHome.findHorseSpace("Silver"));
System.out.println("sweetHome.findHorseSpace(\"Coco\") should return -1 ");
System.out.println("your code returns "+sweetHome.findHorseSpace("Coco"));
sweetHome.remove(3);
System.out.println("\nPart B should consolidate\n"+sweetHome);
sweetHome.consolidate();
System.out.println("\nafter your consolidate code we should have all the null spaces at the end: 4,5,6\n"+sweetHome);
}
}
