По какой-то причине мой getName()
метод и addMemberList()
не работают.
Я перепробовал все с парсингом и отладкой, но, похоже, ничего не работает.
main
public static void main(String[] args) throws FileNotFoundException {
initialUserGuide();
Scanner sc = new Scanner(new File("familytree.txt"));
Family fr = new Family(sc);
fr.displayAllMembersList();
processUserInput(fr);
}
static void initialUserGuide(){
System.out.println("The input file consists of names of all Humans");
System.out.println("Enter the Human name from below list, to display his/her maternal line, Paternal line and children");
}
static void processUserInput(Family fr)
{
Scanner input = new Scanner(System.in);
Person person;
System.out.println("newt Human ( enter told " + "quit)?");
String nextLine = input.nextLine();
while(nextLine.length() > 0){
person = fr.find(nextLine);
if(person == null)
System.out.println("NoMatch Occured");
else
{
displayMaternalLine(person);
displayPaternalLine(person);
displayChildren(person);
}
System.out.println("");
System.out.println("next Human (enter to quit)?");
nextLine = input.nextLine();
}
}
static void displayMaternalLine(Person mother)
{
System.out.println("Maternal Line");
int i = 0;
int count = 1;
while(mother != null)
{
for(i = 0;i < count; i++){
System.out.println("");
}
System.out.println(mother.getName());
mother = mother.getMother();
count++;
}
}
static void displayPaternalLine(Person father)
{
System.out.println("Paternal Line");
int i = 0;
int count = 1;
while(father != null)
{
for(i = 0;i < count; i++){
System.out.println("");
}
System.out.println(father.getName());
father = father.getMother();
count++;
}
}
static void displayChildren(Person person)
{
System.out.println("Children");
ArrayList ptr = person.getChildren();
if(ptr.size()==0)
{
System.out.println(" none");
}
for(int i = 0; i < ptr.size(); i++)
{
System.out.println("\t" + ptr.get(i).getName());
}
}
}
Семейный класс
package assignment7;
import java.util.ArrayList;
import java.util.Scanner;
public class Family{
private ArrayList allMembersList;
public Family(Scanner sc){
allMembersList = new ArrayList();
addAllMembersList(sc);
makeParentChildRelation(sc);
}
Person find(String name)
{
for(int i = 0; i < allMembersList.size();i++)
{
if(allMembersList.get(i).getName().equalsIgnoreCase(name))
return (Person) allMembersList.get(i);
}
return null;
}
public void addAllMembersList(Scanner sc){
String line = sc.nextLine();
while(line.length() != 0)
{
Person person = new Person(line);
addMembersList.add(person);
line = sc.nextLine();
}
}
public void makeParentChildRelation(Scanner sc)
{
String nextLine;
String name,motherName,fatherName;
while(sc.hasNextLine())
{
name = sc.nextLine();
motherName = sc.nextLine();
fatherName = sc.nextLine();
Person personn = find(name);
if(!motherName.equals("unknown"))
{
Person mother = find(motherName);
personn.setMother(mother);
mother.addChildren(personn);
}
if(!fatherName.equals("unknown"))
{
Person father = find(fatherName);
personn.setFather(father);
father.addChildren(personn);
}
}
}
public void displayAllMembersList()
{
for(int i = 0; i < allMembersList.size(); i++)
{
Person person = (Person) allMembersList.get(i);
System.out.println(person.getName());
}
}
}
Персональный класс
package assignment7;
import java.util.ArrayList;
public class Person {
private String name;
private Person mother;
private Person father;
private ArrayList children;
public Person(String name)
{
this.name = name;
children = new ArrayList();
}
public void setName(String name)
{
this.name = name;
}
public void setFather(Person Father){
this.father = Father;
}
public void setMother(Person Mother){
this.mother = Mother;
}
public void addChildren(Person Child)
{
children.add(Child);
}
public String getName()
{
return this.name;
}
public Person getFather()
{
return this.father;
}
public Person getMother()
{
return this.mother;
}
public ArrayList getChildren(){
return this.children;
}
}
familytree.txt
Материнская линия: Генрих VIIII Елизавета Йоркская Отцовская линия:Генрих VIII Генрих VII Дети: Мария I Елизавета I Эдвард VI
Любая помощь будет принята с благодарностью. Вот оригинальная проблема.
Напишите программу семейной базы данных.Создайте класс, чтобы представлять человека и хранить ссылки на его мать, отца и любых детей, которые у него есть.Прочитайте файл имен, чтобы инициализировать имя и родительско-дочерние отношения каждого человека.Сохраните общий список лиц как Arraylist.Напишите общий основной пользовательский интерфейс, который запрашивает имя и печатает для него данные о материнской и отцовской семейной линии.