добавление и проверка записи в Java в адресной книге - PullRequest
1 голос
/ 25 февраля 2011

У меня есть программа адресной книги, она может:

  1. Добавить запись
  2. Удалить запись
  3. Обновление записи
  4. Просмотреть все записи
  5. Просмотр конкретной записи

Все функции работают хорошо, но моя проблема в том, что я хочу проверить, как только пользователь ввел NAME, существует ли он

Это мой addEntry метод:

public void addEntry() {

        entry[counter] = new AddressBookEntry();
        entry[counter].setName(getNonBlankInput("Enter Name: "));
        entry[counter].setAdd(getNonBlankInput("Enter Address: "));
        entry[counter].setPhoneNo(getNonBlankInput("Enter Phone No.: "));
        entry[counter].setEmail(getNonBlankInput("Enter E-mail Address: "));
        counter++;

}

Пожалуйста, помогите мне добавить некоторые условия, которые будут фильтровать пользовательский ввод. Мол, если пользователь ввел имя УЖЕ СУЩЕСТВУЕТ.

Заранее спасибо

Ответы [ 4 ]

2 голосов
/ 25 февраля 2011

А как насчет использования HashMap, введенного по имени? Затем вы можете использовать containsKey (), чтобы увидеть, есть ли имя в HashMap перед добавлением записи.

2 голосов
/ 25 февраля 2011

Используйте HashMap в качестве хранилища с ключами как UserName. Вы можете проверить, существует ли пользователь, выполнив containsKey метод HashMap. Также рекомендуется

  1. Проверка на нулевой ввод
  2. Проверка на пустой ввод
  3. Проверка на абсурдное имя (например, числовые имена, если не разрешено)
  4. Хранить ключи в том же регистре, то есть в нижнем или верхнем регистре. И при поиске дубликатов убедитесь, что ваши данные были преобразованы в этот случай.

//this is your address-book with unique User-Name
private static final HashMap<String, AddressBookEntry> addressBook = new HashMap<String, AddressBookEntry>();
...
...
boolean addEntry(){
    boolean isNewEntry = true;
    //getNonBlankInput should check for valid name
    String name = getNonBlankInput("Enter Name: ");
    if(!addressBook.containsKey(name.toLowerCase())){
        AddressBookEntry entry  = new AddressBookEntry();
        entry.setName(name);
        entry.setAdd(getNonBlankInput("Enter Address: "));
        entry.setPhoneNo(getNonBlankInput("Enter Phone No.: "));
        entry.setEmail(getNonBlankInput("Enter E-mail Address: "));
        addressBook.put(name.toLowerCase(), entry);
    }else{
        isNewEntry = false;
    }
    return isNewEntry;

}
0 голосов
/ 25 февраля 2011
  1. переопределить равно (...) и hashCode () в AddressBookEntry на основе свойства name
  2. используйте HashSet для хранения AddressBookEntry вместо массива
  3. используйте метод содержит (...), чтобы увидеть, существует ли этот объект. HashSet имеет большой O из O (1) для содержит
0 голосов
/ 25 февраля 2011

Вам нужно будет сохранить результаты getNonBlankInput в некоторых локальных переменных, чтобы вы могли проверить их перед непосредственным добавлением в адресную книгу.Вам понадобится какой-то цикл, чтобы проверить все записи адресной книги и сравнить имя, чтобы увидеть, содержится ли оно уже в списке адресов.

...