验证文本文件中的新List <string>

时间:2017-05-26 04:26:04

标签: java

*****更新代码*****

我正在尝试验证联系人是否存在于名为contacts.txt的文本文件中,以防有人在新联系人中键入内容,以避免重复。

我在第一次发布此问题时忘记了路径contactsPath。正如@GhostCat指出的那样.contains()无法读取。因此,通过将文本字符串放入List中,我可以实现此目的。

但是。我的更新错误就像我的代码一样。当我添加新联系人时。如果存在现有联系人,则检查此条件,如果用户输入yes以覆盖,则重写相同的联系人。

我试图添加'Fred Flintstone |的输出123-123-3333不会重写原始联系人。

public static String addressBook = "contactList";
public static String contacts = "contacts.txt";

public static String addContact() throws IOException {
    Path contactsPath = Paths.get(addressBook, contacts);
    List<String> people = Files.readAllLines(contactsPath);

    System.out.println("Add a new contact");
    System.out.println("Enter Contacts Name");
    String nameInput = in.nextLine();
    System.out.println("Enter Contacts Number");
    String phoneNumInput = in.nextLine();
    List<String> newContact = Arrays.asList(nameInput + " | " + phoneNumInput);

    for(String person: people){
        if(person.contains(nameInput)){
            System.out.println("There's already a contact named "+nameInput+". Do you want to overwrite it? (Yes/No)");
            String yesNoInput = in.nextLine();
            if(yesNoInput.equalsIgnoreCase("yes") || yesNoInput.equalsIgnoreCase("y")){
                Files.write(
                  Paths.get(addressBook, contacts),
                        newContact,
                        StandardOpenOption.APPEND
                );
                continueMenu();
            }
            continueMenu();
        }
    }
    return nameInput;
}

CONTACTS.TXT文件中的联系

John Smith | 1231234567
Betty Rubble | 444-333-2222
Fred Flintstone | 123-123-4444Fred Flintstone | 123-123-3333

1 个答案:

答案 0 :(得分:0)

伪代码:

  1. 从文件中读取所有联系人,电话号码并将其放入列表联系人
  2. 要在变量中设置的用户输入,以便根据列表进行检查(您正在调用此newContact)
  3. 检查应该是:

    如果(contacts.contains(newContact))

  4. 确保列表中字符串内容的格式与用户输入(名称|电话)形成的字符串匹配。

  5. 编辑,类似:

    onMessageReceived()

    另外,正如其中一条评论中所指出的,建议使用用户定义的对象而不是使用|分隔符。