BinarySearch returns -1 for an index on failure. If you search for "kitten" and hit the second array for "puppy" there is no resulting match. Work wise, this is easier using a single loop.
Also consider using a Hashtable to associate "kitten" with "cat" for easier lookups.
public String ChangefromAnimal1toAnimal2(String aString)
String sResult = "";
for (int r = 0; r < Farm.animals.length && sResult.isEmpty(); r++)
sResult = animals[r];
BTW, you'd never get the OutOfBounds exception. There are two compile time errors here, one for the import statement, and one for not returning a String from your method.