Can you please review the following code and give any suggestions for improvment?
Class ContactList.java
import 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 method
public 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();
}
}
}
switchby aObservable/Observerpatten, loosely coupled and evolutive \$\endgroup\$