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."); }