Can you please review the following code and give any suggestions for improvment?Class ContactList.javaimport java.io.*;import java.util.*;public class ContactList {public static void main(String args[]) throws IOException {    Contact contact;    contact = new Contact();    int action = 0;    ArrayList<Contact> contacts = new ArrayList<Contact>();    while (action != 6) {        System.out.println(\nWelcome to Contact List DB.                 + What would you like to do? \n);        System.out.println(1. Enter a new person + \n                + 2. Print the contact list + \n                + 3. Retrieve a person's information by last name + \n                + 4. Retrieve a person's information by email address + \n                + 5. Retrieve all people who live in a given zip code + \n                 + 6. Exit);        Scanner reader = new Scanner(System.in);        reader.useDelimiter(\n);        action = reader.nextInt();        if (action <= 0 || action > 6) {            System.out.println(Invalid selection. );        }        switch (action) {        case 1: {            System.out.println(\nEnter Contact Last Name:);            String lastname = reader.next();            if (lastname == null) {                System.out.println(\nInvalid entry. );                break;            }             else {                contact.setLastName(lastname.toLowerCase());            }            System.out.println(Enter Contact First Name: );            String firstname = reader.next();            contact.setFirstName(firstname.toLowerCase());            System.out.println(Enter Contact Street Address: );            String address = reader.next();            contact.setHouseAddress(address.toLowerCase());            System.out.println(Enter Contact City: );            String city = reader.next();            contact.setCity(city.toLowerCase());            System.out.println(Enter Contact Zip Code: );            String zip = reader.next();            contact.setZip(zip.toLowerCase());            System.out.println(Enter Contact Email: );            String email = reader.next();            contact.setEmail(email.toLowerCase());            System.out.println(Enter Contact Phone Number: );            String phone = reader.next();            contact.setPhone(phone.toLowerCase());            System.out.println(Enter Contact Notes: );            String notes = reader.next();            contact.setNotes(notes.toLowerCase());            contacts.add(contact);            try {                Contact c = contact;                File file = new File(contactlist.csv);                // If file doesn't exists, then create it.                if (!file.exists()) {                    file.createNewFile();                }                try (PrintWriter output = new PrintWriter(new FileWriter(                        contactlist.csv, true))) {                    output.printf(%s\r\n, c);                } catch (Exception e) {                }                System.out.println(Your contact has been saved.);            }            catch (IOException e) {                e.printStackTrace();            }        }        break;        case 2: {            int counter = 0;            String line = null;            // Location of file to read            File file = new File(contactlist.csv);            // Sort contacts and print to console            try {                Scanner scanner = new Scanner(file);                // Before printing, add each line to a sorted set. by Seth                // Copeland                Set<String> lines = new TreeSet<>();                while (scanner.hasNextLine()) {                    line = scanner.nextLine();                    lines.add(line);                    counter++;                }                // Print sorted contacts to console.                for (String fileLine : lines) {                    String outlook = fileLine.substring(0, 1).toUpperCase()                            + fileLine.substring(1);                    System.out.println(outlook);                }                scanner.close();            } catch (FileNotFoundException e) {            }            System.out.println(\n + counter +  contacts in records.);        }        break;        case 3:            try {                System.out.println(\nEnter the last                        + name to search for: );                String searchterm = reader.next();                // Open the file as a buffered reader                BufferedReader bf = new BufferedReader(new FileReader(                        contactlist.csv));                // Start a line count and declare a string to hold our                // current line.                int linecount = 0;                String line;                // Let the user know what we are searching for                System.out.println(Searching for  + searchterm                        +  in file...);                // Loop through each line, putting the line into our line                // variable.                boolean noMatches = true;                while ((line = bf.readLine()) != null) {                    // Increment the count and find the index of the word.                    linecount++;                    int indexfound = line.indexOf(searchterm.toLowerCase());                    // If greater than -1, means we found a match.                    if (indexfound > -1) {                        System.out.println(\nContact was FOUND\n                                + \nContact  + linecount + :  + line);                        noMatches = false;                    }                }                // Close the file after done searching                bf.close();                if (noMatches) {                    System.out.println(\nNO MATCH FOUND.\n);                }            }            catch (IOException e) {                System.out.println(IO Error Occurred:  + e.toString());            }            break;        case 4:            try {                System.out.println(\nEnter the email                         + address to search for: );                String searchterm = reader.next();                // Open the file as a buffered reader                BufferedReader bf = new BufferedReader(new FileReader(                        contactlist.csv));                // Start a line count and declare a string to hold our                // current line.                int linecount = 0;                String line;                // Let the user know what we are searching for                System.out.println(\nSearching for  + searchterm                        +  in file...);                // Loop through each line, put the line into our line                // variable.                boolean noMatches = true;                while ((line = bf.readLine()) != null) {                    // Increment the count and find the index of the word                    linecount++;                    int indexfound = line.indexOf(searchterm.toLowerCase());                    // If greater than -1, means we found a match                    if (indexfound > -1) {                        System.out.println(\nContact was FOUND\n                                + \nContact  + linecount + :  + line);                        noMatches = false;                    }                }                // Close the file after done searching                bf.close();                if (noMatches) {                    System.out.println(\nNO MATCH FOUND.\n);                }            }            catch (IOException e) {                System.out.println(IO Error Occurred:  + e.toString());            }            break;        case 5:            try {                System.out.println(\nEnter the Zipcode to search for: );                String searchterm = reader.next();                // Open the file as a buffered reader                BufferedReader bf = new BufferedReader(new FileReader(                        contactlist.csv));                // Start a line count and declare a string to hold our                // current line.                int linecount = 0;                String line;                // Let the user know what we are searching for                System.out.println(\nSearching for  + searchterm                        +  in file...);                // Loop through each line, stashing the line into our line                // variable.                boolean noMatches = true;                while ((line = bf.readLine()) != null) {                    // Increment the count and find the index of the word.                    linecount++;                    int indexfound = line.indexOf(searchterm.toLowerCase());                    // If greater than -1, means we found a match.                    if (indexfound > -1) {                        System.out.println(\nContact was FOUND\n                                + \nContact  + linecount + :  + line);                        noMatches = false;                    }                }                // Close the file after done searching                bf.close();                if (noMatches) {                    System.out.println(\nNO MATCH FOUND.\n);                }            }            catch (IOException e) {                System.out.println(IO Error Occurred:  + e.toString());            }            break;        }    }}}And here's Contact.java    import java.io.File;    import java.io.FileWriter;    import java.io.IOException;    import java.io.PrintWriter;public class Contact {private String lastname, firstname, address, city, zip, email, phone,        notes;public Contact(String lastnamename, String firstname, String address,        String city, String zip, String email, String phone, String notes,        String lastname) {    this.lastname = lastname;    this.firstname = firstname;    this.address = address;    this.city = city;    this.zip = zip;    this.email = email;    this.phone = phone;    this.notes = notes;}public Contact() {}// overrides the default Object methodpublic String toString() {    return lastname + ,  + firstname + ,  + address + ,  + city            + ,  + zip + ,  + email + ,  + phone + ,  + notes;}/* * Sets the value for lastname to s. */public void setLastName(String s) {    lastname = s;}/* * Returns the value of lastname. */public String getLastName() {    return lastname;}/* * Sets the value for firstname to a. */public void setFirstName(String a) {    firstname = a;}/* * Returns the value of firstname. */public String getFirstName() {    return firstname;}/* * Sets the value for address to b. */public void setHouseAddress(String b) {    address = b;}/* * Returns the value of address. */public String getHouseAdress() {    return address;}/* * Sets the value for city to c. */public void setCity(String c) {    city = c;}/* * Returns the value of city. */public String getCity() {    return city;}/* * Sets the value for zip to d. */public void setZip(String d) {    zip = d;}/* * Returns the value of zip. */public String getZip() {    return zip;}/* * Sets the value for phone to e. */public void setPhone(String e) {    phone = e;}/* * Returns the value of phone. */public String getPhone() {    return phone;}/* * Sets the value for email to f. */public void setEmail(String f) {    email = f;}/* * Returns the value of email. */public String getEmail() {    return email;}/* * Sets the value for notes to g. */public void setNotes(String g) {    notes = g;}/* * Returns the value of notes. */public String getNotes() {    return notes;}public void read() {}static void write() {    // Writes contact info to file. -Damani            // ----------------------------------------------------------            try {                Contact contact;                contact = new Contact();                Contact c = contact;                File file = new File(contactlist.csv);                // If file doesn't exists, then create it.                if (!file.exists()) {                    file.createNewFile();                }                try (PrintWriter output = new PrintWriter(new FileWriter(                        contactlist.csv, true))) {                    output.printf(%s\r\n, c);                } catch (Exception e) {                }                System.out.println(Your contact has been saved.);            }            catch (IOException e) {                e.printStackTrace();            }}}
Command line Contact Management
java