Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7777955
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 1, 20262026-06-01T18:16:25+00:00 2026-06-01T18:16:25+00:00

Ok, this is homework. I have an arraylist assignment to add, display, search and

  • 0

Ok, this is homework. I have an arraylist assignment to add, display, search and remove contacts. My code compiles and I have all of the correct methods that function properly EXCEPT for the deleteMatch() method. It compiles and runs, but does not actually remove anything from my arrayList. I also need to go back once done and validate input and check for nulls I know, but I can do that easliy, I’m just trying to get the basics in first. Any help with this method would be greatly appreciated.

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

public class ContactDatabase
 {
private ArrayList<Contact> contacts;        // ArrayList of contact
private static final int QUIT = 0;          // Menu choices
private static final int ADD = 1;
private static final int LISTALL = 2;
private static final int SEARCH = 3;
private static final int DELETE = 4;

/**
* Default constructor - make a new ArrayList object with parameter type Contact,,
*/
ContactDatabase()
{     // Initialize the categories.// instantiate your ArrayList here
    contacts = new ArrayList<Contact>();


}

/**
* inputContact inputs contact information from the keyboard.
* It then stores this new contact in the contacts ArrayList.
*/
public void inputContact()
{
        Contact myContact;

        Scanner input = new Scanner(System.in);

        System.out.println("Please enter first name of new person");
         String first = input.nextLine();

        System.out.println("Please enter last name of new person");
         String last = input.nextLine();

        System.out.println("Please enter phone number xxxxxxxxxx");
         String phone = input.nextLine();

        System.out.println("Please enter e-mail");
         String email = input.nextLine();

        myContact = new Contact(first, last, phone, email);
         contacts.add(myContact);


        System.out.println("Details recorded:");
         System.out.println(contacts);

}

/**
* displayAll iterates through the ArrayList of contacts and outputs each one
* to the screen.
*/
public void displayAll()
{
    for (Contact entry : contacts)
         System.out.println (entry);

}

/**
* displayMatch inputs a keyword from the user.
* It then iterates through the ArrayList of contacts and outputs each one
* to the screen if the contact information contains the keyword.
*/
public void displayMatch()
{

    if(contacts.isEmpty())
        {
            System.out.println("Sorry, there is no contact information to search.");
        }
    else
        {

            Scanner input = new Scanner(System.in);
            System.out.print("Please enter the search keyword for or 0 to quit: ");
            String search = input.next().trim().toUpperCase();
            if (search.equals("0") == false)
                {
                    boolean found = false;
                    for(Contact a: contacts)
                        {
                            if((a.getFirst().toUpperCase().equals(search))||(a.getLast().toUpperCase().equals(search))||(a.getPhone().toUpperCase().equals(search))||(a.getEmail().toUpperCase().equals(search)))
                                {
                                   System.out.println("that contact info is: ");
                                   System.out.println("name: " + a.getFirst());
                                   System.out.println("name: " + a.getLast());
                                   System.out.println("phone number: " + a.getPhone());
                                   System.out.println("email: " + a.getEmail());
                                   found = true;
                                 }

                            else
                                {
                                    found = false;
                                    System.out.println("Sorry, that contact can not be found!");
                                }
                        }
                }
        }
}



/**
* deleteMatch inputs a keyword from the user.
* It then iterates through the ArrayList of contacts and asks the user
* if the contact should be deleted, if the contact information contains the keyword.
*/
public void deleteMatch()
{
    if(contacts.isEmpty())
        {
            System.out.println("Sorry, there is no contact information to search.");
        }
    else
        {

            Scanner input = new Scanner(System.in);
            System.out.print("Please enter the search keyword for or 0 to quit: ");
            String search = input.next().trim().toUpperCase();
            if (search.equals("0") == false)
                {
                    boolean found = false;
                    for(Contact a: contacts)
                        {
                            if((a.getFirst().toUpperCase().equals(search))||(a.getLast().toUpperCase().equals(search))||(a.getPhone().toUpperCase().equals(search))||(a.getEmail().toUpperCase().equals(search)))
                                {
                                   System.out.println("that contact info is: ");
                                   System.out.println("name: " + a.getFirst());
                                   System.out.println("name: " + a.getLast());
                                   System.out.println("phone number: " + a.getPhone());
                                   System.out.println("email: " + a.getEmail());
                                   found = true;
                                   Scanner inp = new Scanner(System.in);
                                   System.out.println("Are you sure you would like to remove this contact?");
                                   String sure = inp.next().toUpperCase();
                                   if (sure.equals("YES"))
                                   {

                                        contacts.remove(a);
                                        System.out.println("Contact removed... ");
                                        displayAll();

                                   }
                                  }



                            else
                                {
                                    found = false;
                                    System.out.println("Sorry, that contact can not be found!");
                                }
                        }
                }
        }
}

// run through the array and look for an item that matches e









    // get keyword input from user to be used in search
    // run through list and look for any Contact that has
    //     the keyword
    // prompt user to make sure they want to delete the
    //     (next/current) Contact you found
    // if yes, delete the Contact



// Main class
public static void main(String[] args)
{
    ContactDatabase cdb = new ContactDatabase();
    Scanner scan = new Scanner(System.in);
    int choice = ADD;

    // Main menu
    while (choice != QUIT)
    {
        System.out.println();
        System.out.println("Choose from the following:");
        System.out.println("0) Quit");
        System.out.println("1) Add new contact");
        System.out.println("2) List all contacts");
        System.out.println("3) Search contacts by keyword and display");
        System.out.println("4) Search contacts by keyword and remove");
        choice = scan.nextInt();
        switch (choice)
        {
            case ADD:   cdb.inputContact();
                        break;
            case LISTALL: cdb.displayAll();
                        break;
            case SEARCH: cdb.displayMatch();
                        break;
            case DELETE: cdb.deleteMatch();
                        break;
        }
    }
}

    class Contact
{
   private String first, last, phone, email;

   /**
    * Constructors.
    */
   public Contact()
   {
   }

   public Contact(String first, String last, String phone, String email)
   {
      this.first = first;
      this.last = last;
      this.phone = phone;
      this.email = email;
   }

   /*
    * Accessor Methods
    */

   public String getFirst()
   {
      return first;
   }

   public String getLast()
   {
      return last;
   }

   public String getPhone()
   {
      return phone;
   }

   public String getEmail()
   {
      return email;
   }

   /*
    * Mutator Methods
    */
   public void setFirst(String first)
   {
      this.first = first;
   }

   public void setLast(String last)
   {
      this.last = last;
   }

   public void setPhone(String phone)
   {
      this.phone = phone;
   }

   public void setEmail(String em)
   {
      this.email = em;
   }



   /*
    * Return all fields concatenated into a string
    */
   public String toString()
   {
      return last + ", " + first + ". " + phone + ", " + email;
   }


   public boolean equals(Object otherObject)
   {
      if (otherObject ==null)
      {
         return false;
      }
      else if (getClass() != otherObject.getClass())
      {
         return false;
      }
      else
      {
         Contact otherContact = (Contact)otherObject;
         return (first.equals(otherContact.first) &&
               last.equals(otherContact.last)&&
               phone.equals(otherContact.phone)&&
               email.equals(otherContact.email));
      }
   }

} // end inner class, Contact
} // end class, ContactDatabase

Thank you to everyone for your help. I finally got it to work!!! Here is the final code:

import java.util.ArrayList;
import java.util.Scanner;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
* The ContactDatabase class stores each contact in an arraylist.
* Methods exist to add new contacts, search contacts, delete, and print contacts
* to the console.
*/
public class ContactDatabase
{
private ArrayList<Contact> contacts;        // ArrayList of contact
private static final int QUIT = 0;          // Menu choices
private static final int ADD = 1;
private static final int LISTALL = 2;
private static final int SEARCH = 3;
private static final int DELETE = 4;

/**
* Default constructor - make a new ArrayList object with parameter type Contact,,
*/
ContactDatabase()
{
    contacts = new ArrayList<Contact>();
}
/**
* inputContact inputs contact information from the keyboard.
* It then stores this new contact in the contacts ArrayList.
*/
public void inputContact()
{
    Contact myContact;
    String first = "null";
    String last = "null";
    String phone = "000-0000000";
    String email = "xxx@example.com";
    Scanner input = new Scanner(System.in);

    while (true)
    {
        System.out.println("Please enter first name of new person");
        first = input.nextLine();
        if (first == null)
        {
            System.out.println("Sorry, first name cannot be null!");
        }
        else
        {
        break;
        }
    }

    while (true)
    {
        System.out.println("Please enter last name of new person");
        last = input.nextLine();
        if (first == null)
        {
            System.out.println("Sorry, last name cannot be null!");
        }
        else
        {
        break;
        }
    }

    while (true)
    {
        System.out.println("Please enter phone number 540-555-1212");
        String vphone = input.nextLine();
        Pattern pattern = Pattern.compile("\\d{3}-\\d{3}-\\d{4}");
        Matcher matcher = pattern.matcher(vphone);
        if ((matcher.matches())|| vphone != null)
        {
            System.out.println("Thank you.");
            phone = vphone;
            break;
        }
        else
        {
            System.out.println("Sorry, that entry is incorrect or null");
        }
    }

    while (true)
    {
        System.out.println("Please enter e-mail xyz@xyz.com");
        String vemail = input.nextLine();
        Pattern pattern = Pattern.compile(".+@.+\\.[a-z]+");
        Matcher matcher = pattern.matcher(vemail);
        if ((matcher.matches())||(vemail != null))
        {
            System.out.println("Thank you.");
            email = vemail;
            break;
        }
        else
        {
            System.out.println("Sorry, that entry is incorrect");
        }
    }

    myContact = new Contact(first, last, phone, email);
    contacts.add(myContact);

    System.out.println("Details recorded:");
    System.out.println(contacts);

}

/**
* displayAll iterates through the ArrayList of contacts and outputs each one
* to the screen.
*/
public void displayAll()
{
    System.out.println("Current contact list entries:");
    for (Contact entry : contacts)
    System.out.println (entry);
}
/**
* displayMatch inputs a keyword from the user.
* It then iterates through the ArrayList of contacts and outputs each one
* to the screen if the contact information contains the keyword.
*/
public void displayMatch()
{
    boolean found = false;
    Scanner input = new Scanner(System.in);
    System.out.print("Please enter the search keyword for or 0 to quit: ");
    String search = input.next().trim().toUpperCase();
    if (search.equals("0") == false)
    {
        for(Contact a: contacts)
        {
            if((a.getFirst().toUpperCase().equals(search))||(a.getLast().toUpperCase().equals(search))||(a.getPhone().toUpperCase().equals(search))||(a.getEmail().toUpperCase().equals(search)))
            {
                System.out.println("that contact info is: ");
                System.out.print("name: " + a.getFirst());
                System.out.println(" " + a.getLast());
                System.out.println("phone number: " + a.getPhone());
                System.out.println("email: " + a.getEmail());
                found = true;
            }
            if(contacts.isEmpty())
            {
                System.out.println("Sorry, there is no contact information to search.");
            }
        }
    }
    if (found == false)
    {
        System.out.println("Sorry, no such contact");
    }
}
/**
* deleteMatch inputs a keyword from the user.
* It then iterates through the ArrayList of contacts and asks the user
* if the contact should be deleted, if the contact information contains the keyword.
*/
public void deleteMatch()
{
    for (int i=0; i< contacts.size(); i++)
    {
        displayMatch();
        Scanner inp = new Scanner(System.in);
        System.out.println("Are you sure you would like to remove this contact?");
        String sure = inp.next().toUpperCase();
        if (sure.equals("YES"))
        {
            contacts.remove(i);
            System.out.println("Thank you. Contact removed.");
            displayAll();
        }
    }
}

// Main class
public static void main(String[] args)
{
    ContactDatabase cdb = new ContactDatabase();
    Scanner scan = new Scanner(System.in);
    int choice = ADD;

    // Main menu
    while (choice != QUIT)
    {
        System.out.println();
        System.out.println("Choose from the following:");
        System.out.println("0) Quit");
        System.out.println("1) Add new contact");
        System.out.println("2) List all contacts");
        System.out.println("3) Search contacts by keyword and display");
        System.out.println("4) Search contacts by keyword and remove");
        choice = scan.nextInt();
        switch (choice)
        {
            case ADD:   cdb.inputContact();
                        break;
            case LISTALL: cdb.displayAll();
                        break;
            case SEARCH: cdb.displayMatch();
                        break;
            case DELETE: cdb.deleteMatch();
                        break;
        }
    }
}

/**
 * The inner class, Contact, stores the details for a single contact.
 *  There is no error checking on any of the input.  Whatever string is
 *  passed in for a given attribute is accepted.
 */
class Contact
{
   private String first, last, phone, email;

   /**
    * Constructors.
    */
   public Contact()
   {
   }

   public Contact(String first, String last, String phone, String email)
   {
      this.first = first;
      this.last = last;
      this.phone = phone;
      this.email = email;
   }

   /*
    * Accessor Methods
    */

   public String getFirst()
   {
      return first;
   }

   public String getLast()
   {
      return last;
   }

   public String getPhone()
   {
      return phone;
   }

   public String getEmail()
   {
      return email;
   }

   /*
    * Mutator Methods
    */
   public void setFirst(String first)
   {
      this.first = first;
   }

   public void setLast(String last)
   {
      this.last = last;
   }

   public void setPhone(String phone)
   {
      this.phone = phone;
   }

   public void setEmail(String em)
   {
      this.email = em;
   }



   /*
    * Return all fields concatenated into a string
    */
   public String toString()
   {
      return last + ", " + first + ". " + phone + ", " + email;
   }


   public boolean equals(Object otherObject)
   {
      if (otherObject ==null)
      {
         return false;
      }
      else if (getClass() != otherObject.getClass())
      {
         return false;
      }
      else
      {
         Contact otherContact = (Contact)otherObject;
         return (first.equals(otherContact.first) &&
               last.equals(otherContact.last)&&
               phone.equals(otherContact.phone)&&
               email.equals(otherContact.email));
      }
   }

} // end inner class, Contact
} // end class, ContactDatabase
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-01T18:16:26+00:00Added an answer on June 1, 2026 at 6:16 pm

    If you have overridden the equals method you dont need to check for individual fields , yoy can simply create a new contact with new information and then just call arrayList.remove(contact_ob); it will remove if it exists,

    also for comparing string you are using string.toUpper().equals(other_str); instead you can use string.equalsIgnoreCase(otherString) , will compare irrespective of the case

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

(this is indirectly a part of a much larger homework assignment) I have something
I have a homework assignment to sort an array in ascending order. Obviously, this
I have this homework problem where I need to use regex to remove every
I have this homework assignment where the user is asked to input numbers and
I have this homework: finding the code words for the symbols in any given
Continuing on this problem , but I'll reiterate: For a homework assignment I have
I'm still not very good with data structures, but I have this homework assignment
I have this homework to do in C. I'm beginner so it is probably
(Before anyone says anything Yes this was homework but i have already turned it
This is my homework, but please read my problem description first. I have to

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.