Answer:
See Explaination 
Explanation:
/*****************************************Hokeemon.java********************************/
import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;
public class Hokeemon {
 private String name;
 private String type;
 private int age;
 public Hokeemon(String name, String type, int age) {
 super();
 this.name = name;
 this.type = type;
 this.age = age;
 }
 public Hokeemon() {
 this.name = "";
 this.type = "";
 this.age = 0;
 }
 public String getName() {
 return name;
 }
 public void setName(String name) {
 this.name = name;
 }
 public String getType() {
 return type;
 }
 public void setType(String type) {
 this.type = type;
 }
 public int getAge() {
 return age;
 }
 public void setAge(int age) {
 this.age = age;
 }
 public String liveIn() {
 if (this.type.equalsIgnoreCase("dwarf")) {
 return "Mountain";
 } else if (this.type.equalsIgnoreCase("elf")) {
 return "Dale";
 } else if (this.type.equalsIgnoreCase("fairy")) {
 return "Forest";
 } else {
 return "Shire";
 }
 }
 public boolean areFriends(Hokeemon other) {
 if (this.type.equalsIgnoreCase(other.type)) {
 return true;
 } else if ((this.type.equalsIgnoreCase("dwarf") && other.type.equalsIgnoreCase("elf"))
 || (this.type.equalsIgnoreCase("elf") && other.type.equalsIgnoreCase("dwarf"))) {
 return true;
 } else if ((this.type.equalsIgnoreCase("hobbit") && other.type.equalsIgnoreCase("fairy"))
 || (this.type.equalsIgnoreCase("fairy") && other.type.equalsIgnoreCase("hobbit"))) {
 return true;
 } else {
 return false;
 }
 }
 public static Hokeemon[] getData(String file) {
 Hokeemon[] hokeemons = new Hokeemon[8];
 int i = 0;
 try {
 Scanner scan = new Scanner(new File(file));
 while (scan.hasNextLine() && i < hokeemons.length) {
 String line = scan.nextLine();
 String[] data = line.split("\\s+");
 String name = data[0];
 String type = data[1];
 int age = Integer.parseInt(data[2]);
 hokeemons[i] = new Hokeemon(name, type, age);
 i++;
 }
 scan.close();
 } catch (FileNotFoundException e) {
 System.err.println(e);
 }
 return hokeemons;
 }
 public static String getBio(Hokeemon[] hokeemons) {
 String s = "";
 for (Hokeemon hokeemon : hokeemons) {
 s += "I am " + hokeemon.getName() + ": Type " + hokeemon.getType() + ": Age=" + hokeemon.getAge()
 + ", I live in " + hokeemon.liveIn() + "\n";
 s += "My friends are: ";
 for (Hokeemon hokeemon2 : hokeemons) {
 if (hokeemon.areFriends(hokeemon2) && !hokeemon.equals(hokeemon2)) {
 s += (hokeemon2.getName() + " ");
 }
 }
 s += "\n";
 }
 return s;
 }
 atOverride
 public String toString() {
 return "Name " + name + ": Type " + type + ": Age=" + age + "\n";
 }
}
/*******************************HokeemonMain.java**************************/
import java.util.Arrays;
public class HokeemonMain {
 public static void main(String[] args) {
 Hokeemon[] hokeemons = Hokeemon.getData("data.txt");
 System.out.println(Arrays.toString(hokeemons));
 System.out.println(Hokeemon.getBio(hokeemons));
 }
}
/**********************************data.txt********************/
Noddy Dwarf 4
Legolas Elf 77
Minerva Fairy 33
Samwise Hobbit 24
Merry Hobbit 29
Warhammer Dwarf 87
Ernedyll Elf 19
Frodo Hobbit 18