*****更新代码*****
我正在尝试验证联系人是否存在于名为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
答案 0 :(得分:0)
伪代码:
检查应该是:
如果(contacts.contains(newContact))
确保列表中字符串内容的格式与用户输入(名称|电话)形成的字符串匹配。
编辑,类似:
onMessageReceived()
另外,正如其中一条评论中所指出的,建议使用用户定义的对象而不是使用|分隔符。