For some reason, in my Pseudo database, my remove method seems to be completely ineffective and isn't working. The source code is below:
import java.util.ArrayList; import java.util.Scanner; public class Lab2 { static ArrayList<Person> peopleDirectory = new ArrayList<Person>(10); public static void main(String[] args) { // TODO Auto-generated method stub int choice; Scanner userInput = new Scanner(System.in); do { System.out.println("Welcome to the people directory please make a choice from the list below:"); System.out.println("-------------------------------------------------------------------------"); System.out.println("1. Add a person to the directory."); System.out.println("2. Remove a Person from the directory."); System.out.println("3. View the User Directory."); System.out.println("4. Exit the directory."); choice = userInput.nextInt(); switch(choice) { case 1: addPerson(new Person()); break; case 2: removePerson(new Person()); break; case 3: displayPeople(); break; case 4: System.out.println("Thanks for using the people diretory!"); System.exit(0); break; default: System.out.println("Invalid choice! Please select a valid choice!"); break; } } while (choice != 4); } public static void addPerson(Person thePerson) { String firstName; String lastName; String phoneNumber; int age; if (peopleDirectory.size() >= 10) { System.out.println("Sorry the list can not be larger than 10 people"); } else { int i = 0; Scanner input = new Scanner(System.in); System.out.println("Enter the first name of the Person you would like to add: "); firstName = input.nextLine(); thePerson.setFirstName(firstName); System.out.println("Enter the last name of the Person you would like to add: "); lastName = input.nextLine(); thePerson.setLastName(lastName); System.out.println("Enter the phone number of the Person you would like to add: "); phoneNumber = input.nextLine(); thePerson.setPhoneNumber(phoneNumber); System.out.println("Enter the age of the Person you would like to add: "); age = input.nextInt(); thePerson.setAge(age); peopleDirectory.add(i, thePerson); i++; } } public static void removePerson(Person thePerson) { if (peopleDirectory.size() < 1) { System.out.println("There is absolutely nothing to remove from the Directory"); } else { Scanner input = new Scanner(System.in); System.out.println("Please enter the first name of the person you would like to delete: "); String firstName = input.nextLine(); thePerson.setFirstName(firstName); System.out.println("Enter the last name of the Person you would like to remove: "); String lastName = input.nextLine(); thePerson.setLastName(lastName); System.out.println("Enter the phone number of the Person you would like to remove: "); String phoneNumber = input.nextLine(); thePerson.setPhoneNumber(phoneNumber); System.out.println("Enter the age of the Person you would like to remove: "); int age = input.nextInt(); thePerson.setAge(age); for (int i = 0; i < peopleDirectory.size(); i++) { if (peopleDirectory.get(i).equals(thePerson)) { peopleDirectory.remove(thePerson); } } } } public static void displayPeople() { for (Person person : peopleDirectory) { System.out.println("First Name: " + person.getFirstName() + " Last name: " + person.getLastName() + " Phone number: " + person.getPhoneNumber() + " Age: " + person.getAge()); } } } class Person { private String firstName; private String lastName; private int age; private String phoneNumber; public Person (String firstName, String lastName, int personAge, String phoneNumber) { this.firstName = firstName; this.lastName = lastName; this.age = personAge; this.phoneNumber = phoneNumber; } public Person() { this.firstName = ""; this.lastName = ""; this.age = 0; this.phoneNumber = ""; } public int getAge() { return this.age; } public String getFirstName() { return this.firstName; } public String getLastName() { return this.lastName; } public String getPhoneNumber() { return this.phoneNumber; } public void setFirstName(String firstName) { this.firstName = firstName; } public void setLastName(String lastName) { this.lastName = lastName; } public void setAge(int age) { this.age = age; } public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber; } } When I attempt to remove an element from the ArrayList, it still remains in the arrayList. I have no idea why, but I feel as if my remove method is a bit clunky.
For instance I add an element and attempt to remove it (see output below):
Welcome to the people directory please make a choice from the list below: ------------------------------------------------------------------------- 1. Add a person to the directory. 2. Remove a Person from the directory. 3. View the User Directory. 4. Exit the directory. 1 Enter the first name of the Person you would like to add: Tom Enter the last name of the Person you would like to add: Jones Enter the phone number of the Person you would like to add: 6073388152 Enter the age of the Person you would like to add: 24 Welcome to the people directory please make a choice from the list below: ------------------------------------------------------------------------- 1. Add a person to the directory. 2. Remove a Person from the directory. 3. View the User Directory. 4. Exit the directory. 3 First Name: Tom Last name: Jones Phone number: 6073388152 Age: 24 Welcome to the people directory please make a choice from the list below: ------------------------------------------------------------------------- 1. Add a person to the directory. 2. Remove a Person from the directory. 3. View the User Directory. 4. Exit the directory. 2 Please enter the first name of the person you would like to delete: Tom Enter the last name of the Person you would like to remove: Jones Enter the phone number of the Person you would like to remove: 6073388152 Enter the age of the Person you would like to remove: 24 Welcome to the people directory please make a choice from the list below: ------------------------------------------------------------------------- 1. Add a person to the directory. 2. Remove a Person from the directory. 3. View the User Directory. 4. Exit the directory. 3 First Name: Tom Last name: Jones Phone number: 6073388152 Age: 24 Welcome to the people directory please make a choice from the list below: ------------------------------------------------------------------------- 1. Add a person to the directory. 2. Remove a Person from the directory. 3. View the User Directory. 4. Exit the directory. What could I be doing wrong here?
equalsmethod and compare the fields. Ifequalsisn't overridden, it just uses the default behavior which compares references, not values.equals()method in yourPersonclass.new Personinto the functions. Either build the person outside the function, and pass that in or construct inside