Java 地址簿中的删除和修改
最近,我一直在编写地址簿,其中大多数都有以下操作: 联系人条目 更换触点 显示联系人 显示所有联系人 删除联系人。 输入联系人和显示所有联系人都正常工作,但我不知道如何完成其余工作 这就是我到目前为止所做的: 主要类别:Java 地址簿中的删除和修改,java,addressbook,Java,Addressbook,最近,我一直在编写地址簿,其中大多数都有以下操作: 联系人条目 更换触点 显示联系人 显示所有联系人 删除联系人。 输入联系人和显示所有联系人都正常工作,但我不知道如何完成其余工作 这就是我到目前为止所做的: 主要类别: import java.util.ArrayList; import java.util.List; import java.util.Scanner; public class AddressBook { private static List<Data>
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
public class AddressBook {
private static List<Data> contact = new ArrayList<Data>();
public static void main(String[] args) {
AddressBook addressBook = new AddressBook();
Scanner sc = new Scanner(System.in);
int menu;
String choice;
System.out.println(" 0. Exit. ");
System.out.println(" 1. Add contact. ");
System.out.println(" 2. Edit contact. ");
System.out.println(" 3. Outprint contact. ");
System.out.println(" 4. Outprint all contacts. ");
System.out.println(" 5. Delete contact. ");
menu = sc.nextInt();
while (menu != 0) {
switch (menu) {
case 1:
while (menu != 2) {
System.out.println("Enter First Name: ");
String firstName = sc.next();
System.out.println("Enter Last Name: ");
String lastName = sc.next();
System.out.println("Enter email: ");
String email = sc.next();
contact.add(new Data(firstName, lastName, email));// Creating a new object and adding it to list
System.out.println("Would you like to add someone else? 1: Yes, 2: No");
menu = sc.nextInt();
}
break;
case 2:
System.out.println("Enter First Name of contact that you would like to edit: ");
int index = sc.nextInt();
break;
case 3:
System.out.println("Enter First Name of contact that you would like to delete: ");
choice = sc.next();
break;
case 4:
System.out.println(addressBook.contact);
break;
case 5:
System.out.println("Vpišite ime osebe, ki jo želite izbrisati: ");
choice = sc.next();
contact.remove(choice);
break;
}
System.out.println(" 0. Exit. ");
System.out.println(" 1. Add contact. ");
System.out.println(" 2. Edit contact. ");
System.out.println(" 3. Outprint contact. ");
System.out.println(" 4. Outprint all contacts. ");
System.out.println(" 5. Delete contact. ");
menu = sc.nextInt();
}
System.out.println("Goodbye!");
}
private void addData(String firstName, String lastName, String email) {
Data person = new Data(firstName, lastName, email);
contact.add(person);
}
}
删除操作如下所示:
/**
* Will work long as there are no two contacts with same first name. In that case
* you'll need more data to find a unique contact.
*/
private void deleteByFirstName(String firstName) {
for (Iterator<Data> iterator = contact.iterator(); iterator.hasNext();) {
Data temp = iterator.next();
// Add null checks for proper error handling.
if (temp.getFirstName().equalsIgnoreCase(firstName)) {
iterator.remove();
return;
}
}
System.out.println("No contact with first name " + firstName + " was found.");
}
您可以使用类似的逻辑来显示或编辑单个联系人。只需创建一个helper方法,该方法循环遍历联系人并返回匹配的联系人,您可以将其用于这两个联系人。然后继续打印或编辑数据对象。您的问题是什么?如何仅更改一个联系人,如何仅显示一个联系人,以及如何仅删除一个联系人?谢谢您的建议,现在可以使用了。我最大的问题是,我不知道如何删除、显示或编辑单个联系人。我知道如何查找和显示联系人,但我仍然不知道如何编写一个方法来设置联系人的名字、姓氏和电子邮件。如果你有一个方法可以从列表中查找联系人,然后,您只需使用contact对象上的setters使用给定信息编辑该联系人的字段?public static void editContactString firstName{Scanner sc=new ScannerSystem.in;for int i=0;i
/**
* Will work long as there are no two contacts with same first name. In that case
* you'll need more data to find a unique contact.
*/
private void deleteByFirstName(String firstName) {
for (Iterator<Data> iterator = contact.iterator(); iterator.hasNext();) {
Data temp = iterator.next();
// Add null checks for proper error handling.
if (temp.getFirstName().equalsIgnoreCase(firstName)) {
iterator.remove();
return;
}
}
System.out.println("No contact with first name " + firstName + " was found.");
}