I am doing a coding exercise to simulate contacts list in a mobile phone, you can search existing contact and add new contact from system input,however, I ran into some problems dealing with scanners and don't know why: (I would really appreciate your help, so thanks in advance!)
Here is my code: First of all a class for Contacts:
public class Contacts {
private String contactName;
private String phoneNumber;
public Contacts(){
}
public Contacts(String contactName, String phoneNumber) {
this.contactName = contactName;
this.phoneNumber = phoneNumber;
}
public String getContactName() {
return contactName;
}
public String getPhoneNumber() {
return phoneNumber;
}
}
Then I created a MobilePhone class to hold the contact ArrayList, with addContact() and searchContactByName() method:
public class MobilePhone {
private ArrayList<Contacts> contactList = new ArrayList<Contacts>();
//searchContactByName() method takes the contact name you want to search and
//return the contact object with that contact name if it's in the list, and return null if the contact is not on the list
public Contacts searchContactByName(String contactName){
Contacts returnContact = new Contacts();
boolean contactExist = false;
for(int i = 0; i < contactList.size(); i++){
if(contactList.get(i).getContactName() == contactName){
System.out.println("Contact " + contactName + " found");
contactExist = true;
returnContact = contactList.get(i);
break;
}
}
if(contactExist == true){
return returnContact;
}else{
System.out.println("not found");
return null;
}
}
//addContact2() method use the searchContactByName() method to make sure
//that the contact you add does not already exists in the list
public void addContact2(String contactName, String phoneNumber){
Contacts newContact = new Contacts(contactName,phoneNumber);
if(searchContactByName(contactName) != null){
System.out.println("This contact is already in the contact list.");
}else{
contactList.add(newContact);
System.out.println(contactName + " has been added to the list");
}
}
However, in the main method when I try to implement the function:
public class TestMain {
public static Scanner myScanner = new Scanner(System.in);
public static void main(String[] args) {
MobilePhone jolenePhone = new MobilePhone();
//First add a contact object with contactName "Rish" in the list:
jolenePhone.addContact2("Rish","1234");
//Then use searchContactByName() function to search the contact object with name "Rish" in the list:
jolenePhone.searchContactByName("Rish");
}
}
This would work normally with the output at the console:
However, if I use the scanner function:
MobilePhone jolenePhone = new MobilePhone();
//First add a contact object with contactName "Rish" in the list:
jolenePhone.addContact2("Rish","1234");
System.out.println("Please enter search name: ");
String searchName = myScanner.nextLine();
jolenePhone.searchContactByName(searchName);
Then the searchFunction would return not found for the contact name "Rish" I input through the console:
I don't understand why would it make a difference at all whether I pass the contactName parameter "Rish" directly, or I use the scanner.nextLine() function to input from the console, what did I miss here?