项目不会显示搜索结果

时间:2014-04-24 22:34:55

标签: java

我有这个项目我整个星期都在工作,无法在交换机案例3中的Main.java中搜索工作。知道为什么这不会显示??

这一切都是:(

Main.Java

package hartman;


import java.util.ArrayList;
import java.util.Scanner;

public class Main {

public static void main(String[] args) {
    Printer.printWelcome();

    Scanner keyboard = new Scanner(System.in);
    ArrayList<Person> personList = new ArrayList<>();
    boolean keepRunning = true;
    while (keepRunning) {
        Printer.printMenu();
        Printer.printPrompt("Please enter your operation: ");

        String userSelection = keyboard.nextLine();

        switch (userSelection) {
        case "1":
            Database.addPerson(personList);
            break;
        case "2":
            Database.printDatabase(personList);
            break;
        case "3":
            Printer.printSearchPersonTitle();
            String searchFor = keyboard.nextLine();
            Database.findPerson(searchFor);
            Printer.printPersonList(personList);
            break;
        case "4":
            keepRunning = false;
            break;
        default:
            break;
        }
    }

    Printer.printGoodBye();
    keyboard.close();
}

}

Database.Java

package hartman;

import java.util.ArrayList;
import java.util.Scanner;

public class Database {
static Scanner keyboard = new Scanner(System.in);
private static ArrayList<Person> personList = new ArrayList<Person>();

public Database() {

}

public static void addPerson(ArrayList<Person> personList) {
    Printer.printAddPersonTitle();
    Printer.printPrompt("  Enter first name: ");
    String addFirstName = keyboard.nextLine();

    Printer.printPrompt("  Enter last Name: ");
    String addLastName = keyboard.nextLine();

    Printer.printPrompt("  Enter social Security Number: ");
    String addSocial = keyboard.nextLine();

    Printer.printPrompt("  Enter year of birth: ");
    int addYearBorn = Integer.parseInt(keyboard.nextLine());

    System.out.printf("\n%s, %s saved!\n", addFirstName, addLastName);
    Person person = new Person();
    person.setFirstName(addFirstName);
    person.setLastName(addLastName);
    person.setSocialSecurityNumber(addSocial);
    person.setYearBorn(addYearBorn);
    personList.add(person);
}

public static void printDatabase(ArrayList<Person> personList) {
    System.out
            .printf("\nLast Name           First Name           Social Security Number  Age\n");
    System.out
            .printf("=================== ===================  ======================  ===\n");
    for (Person p : personList) {

        System.out.printf("%-20s%-21s%-24s%s\n", p.getLastName(),
                p.getLastName(), p.getSocialSecurityNumber(), p.getAge());

    }

}

public static ArrayList<Person> findPerson(String searchFor) {
    ArrayList<Person> matches = new ArrayList<>();
    for (Person p : personList) {
        boolean isAMatch = false;

        if (p.getFirstName().equalsIgnoreCase(searchFor)) {
            isAMatch = true;

        } else if (p.getLastName().equalsIgnoreCase(searchFor)) {
            isAMatch = true;

        } else if (p.getSocialSecurityNumber().contains(searchFor)) {
            isAMatch = true;
            ;
        } else if (String.format("%d", p.getAge()).equals(searchFor)) {
            isAMatch = true;
        }
        if (isAMatch) {
            matches.add(p);
        }
        Printer.printPersonList(matches);
    }

    return matches;

}

}

Person.Java

package hartman;

public class Person {

private String firstName;
private String lastName;
private String socialSecurityNumber;
private int yearBorn;

public Person() {

}

public Person(String firstName, String lastName,
        String socialSecurityNumber, int yearBorn) {
    this.firstName = firstName;
    this.lastName = lastName;
    this.socialSecurityNumber = socialSecurityNumber;
    this.yearBorn = yearBorn;

}

public int getAge() {
    return yearBorn = 2014 - yearBorn;
}

public String getFirstName() {
    return firstName;
}

public void setFirstName(String firstName) {
    this.firstName = firstName;
}

public String getLastName() {
    return lastName;
}

public void setLastName(String lastName) {
    this.lastName = lastName;
}

public String getSocialSecurityNumber() {
    return socialSecurityNumber;
}

public void setSocialSecurityNumber(String socialSecurityNumber) {
    this.socialSecurityNumber = socialSecurityNumber;
}

public int getYearBorn() {
    return yearBorn;
}

public void setYearBorn(int yearBorn) {
    this.yearBorn = yearBorn;
}
}

Printer.Java

package hartman;

import java.util.ArrayList;

public class Printer {

public static void printWelcome() {
    System.out.printf("WELCOME TO PERSON DATABASE!\n");
}

public static void printGoodBye() {
    System.out.printf("\nGOOD BYE!!\n");
}

public static void printMenu() {
    System.out.printf("\nMain Menu\n");
    System.out.printf("---------\n\n");
    System.out.printf("  1. Add a new Person to the database.\n");
    System.out.printf("  2. Print the database.\n");
    System.out.printf("  3. Search for a person in the database.\n");
    System.out.printf("  4. Exit the application.\n");
    System.out.printf("\n");
}

public static void printPrintMenu() {
    System.out.printf("Print\n\n");
}

public static void printAddPersonTitle() {
    System.out.printf("\nAdd Person to Database\n\n");

}

public static void printPrompt(String promptForWhat) {
    System.out.printf("%s", promptForWhat);
}

public static void printPersonSaved(Person personSaved) {
    System.out.printf("%s", personSaved);
}

public static void printSearchPersonTitle() {
    System.out.printf("\nSearch for Person in Database\n\n");
    System.out.printf("Enter search value: ");
}

public static void printPersonList(ArrayList<Person> personListToPrint) {

    System.out
            .printf("\nLast Name           First Name           Social Security Number  Age\n");
    System.out
            .printf("=================== ===================  ======================  ===\n");
    for (Person p : personListToPrint) {

        System.out.printf("%-20s%-21s%-24s%s\n", p.getLastName(),
                p.getLastName(), p.getSocialSecurityNumber(), p.getAge());

    }


}
}

任何帮助都会很棒......即将破坏我的电脑并放弃。

1 个答案:

答案 0 :(得分:0)

问题是您正在使用DataBase中的静态实例

ArrayList<Person> personList = new ArrayList<Person>();

我要说遵守OOP click here if you want to learn

的规则

但是既然你已经开始编写很多代码,请尝试回答你的问题..

不要在DataBase中使用personList的实例。只需使用Main类。

此处是问题的起点:

for (Person p : personList)

您正在使用DataBase类中的空ArrayList。 拥有数据并且您正在使用的是来自Main类..

<强>溶液

删除

private static ArrayList<Person> personList = new ArrayList<Person>();

从您的数据库

然后在您的主类

中执行此操作
 public class Main {
  public static ArrayList<Person> personList;
  public static void main(String[] args) {
    Printer.printWelcome();

    Scanner keyboard = new Scanner(System.in);
    personList = new ArrayList<Person>();

并将for循环更改为:

for (Person p : Main.personList)

这是你在你的问题上不使用OOP而得到的东西,它太丑陋而复杂。 当它面向对象时它更好.P.S。了解...