在地址簿中添加和检查Java中的条目

时间:2011-02-25 06:13:48

标签: java addressbook conditional-operator

我有一个地址簿程序:

  1. 添加条目
  2. 删除条目
  3. 更新条目
  4. 查看所有条目
  5. 查看具体条目
  6. 所有功能都很好,但我的问题是,如果用户输入了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++;
    
    }
    

    请帮我添加一些过滤用户输入的条件。比如,如果用户输入了名称ALREADY EXISTS。

    提前致谢

4 个答案:

答案 0 :(得分:2)

使用HashMap作为存储,密钥为UserName。您可以通过执行HashMap的containsKey方法来检查用户是否存在。此外,建议

  1. 检查NULL输入
  2. 检查空白输入
  3. 检查荒谬的名称(如果不允许,请使用数字名称)
  4. 以相同的方式存储密钥,即小写或大写。在寻找重复时,请确保您的输入已转换为该情况。

  5. //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;
    
    }
    

答案 1 :(得分:2)

使用HashMap,键入名称怎么样?然后你可以使用containsKey()在添加条目之前查看名称是否已经在HashMap中。

答案 2 :(得分:0)

您需要将getNonBlankInput的结果存储在某些局部变量中,以便在将它们直接添加到地址簿之前对其进行检查。您将需要某种循环来检查地址簿的所有条目,并比较名称以查看它是否已包含在地址列表中。

答案 3 :(得分:0)

    AddressBookEntry中基于名称属性的
  1. override equals(...) and hashCode()
  2. 使用HashSet存储AddressBookEntry而不是数组
  3. 使用contains(...)方法查看此对象是否已存在。 HashSet的包含
  4. big O为O(1)