Java 如何删除数组中的元素?

Java 如何删除数组中的元素?,java,arrays,Java,Arrays,我很难删除数组中的元素。我已经试了一段时间了,我正在用头撞桌子,试图弄明白这一点。我将非常感谢任何帮助 package javaapplication9; import java.util.Scanner; import java.util.ArrayList; public class JavaApplication9 { int x; final int maxContacts = 3; final String[] FIRSTNAME = { "Josh", "J

我很难删除数组中的元素。我已经试了一段时间了,我正在用头撞桌子,试图弄明白这一点。我将非常感谢任何帮助

package javaapplication9;
import java.util.Scanner;
import java.util.ArrayList;

public class JavaApplication9 {
    int x;
    final int maxContacts = 3;
    final String[] FIRSTNAME = { "Josh", "Joe", "Jim" };
    final String[] LASTNAME = { "Jones", "Smith", "Thomas" };
    final String[] ADDRESS =
        { "142 Washington Ave", "500 Main St", "200 Oak Way" };
    final String[] CITY = { "Pittsburgh", "Pittsburgh", "Pittsburgh" };
    final String[] STATE = { "PA", "PA", "PA" };
    final String[] ZIP = { "15222", "15222", "15222" };
    final String[] TELEPHONE =
        { "412-722-1500", "412-498-2500", "412-787-3500" };
    String[]firstName = new String[3];
    String[]lastName = new String[3];
    String[]address = new String[3];
    String[]city = new String[3];
    String[]state = new String[3];
    String[]zip = new String[3];
    String[]telephone = new String[3];
    String nameSearch;
    boolean firstNameFound = true, lastNameFound = true, addressFound =
        true, cityFound = true, stateFound = true, zipFound =
        true, telephoneFound = true;

    Scanner keyboard = new Scanner(System.in);

    public void getInfo() {

        while (x < maxContacts) {
            Scanner input = new Scanner(System.in);
            System.out.
                println
                ("Enter '1' To Add A Contact \nEnter '2' To Delete A Contact \nEnter '3' To Search For A Name \nEnter '4' To Display All Contacts \nEnter 'Q' To Quit");
            int usersChoice = input.nextInt();

            if (usersChoice == 1) {

                System.out.print("Please enter a first name: ");
                firstName[x] = keyboard.nextLine();
                if (firstNameFound) {
                    System.out.
                        print("Please enter a last name: ");
                    lastName[x] = keyboard.nextLine();
                }
                if (lastNameFound) {
                    System.out.
                        print("Please enter an address: ");
                    address[x] = keyboard.nextLine();
                }
                if (addressFound) {
                    System.out.
                        print("Please enter a city: ");
                    city[x] = keyboard.nextLine();
                }
                if (cityFound) {
                    System.out.
                        print("Please enter a state: ");
                    state[x] = keyboard.nextLine();
                }
                if (stateFound) {
                    System.out.
                        print("Please enter a zip: ");
                    zip[x] = keyboard.nextLine();
                }
                if (zipFound) {
                    System.out.
                        print
                        ("Please enter a telephone number: ");
                    telephone[x] = keyboard.nextLine();
                }

            }

            if (usersChoice == 4) {
                System.out.println("\nList Of Contacts");
                System.out.
                    println("------------------------------");
                for (int i = 0; i < FIRSTNAME.length; i++) {
                    System.out.println("First Name: " +
                               FIRSTNAME[i] +
                               "\nLast Name: " +
                               LASTNAME[i] +
                               "\nAddress: " +
                               ADDRESS[i]
                               + "\nCity: " +
                               CITY[i] +
                               "\nState: " +
                               STATE[i] +
                               "\nZip: " + ZIP[i] +
                               "\nTelephone: " +
                               TELEPHONE[i] +
                               "\n-------------------------\n");
                }
                for (int i = 0; i < firstName.length; i++) {
                    System.out.println("First Name: " +
                               firstName[i] +
                               "\nLast Name: " +
                               lastName[i] +
                               "\nAddress: " +
                               address[i]
                               + "\nCity: " +
                               city[i] +
                               "\nState: " +
                               state[i] +
                               "\nZip: " + zip[i] +
                               "\nTelephone: " +
                               telephone[i]);
                }
            }

            if (usersChoice == 3) {
                System.out.print("\n\nPlease enter a name to find ");
                // no idea how to
                // search a name and
                // display the
                // corresponding
                // number!
                nameSearch = keyboard.next();

                for (int i = 0; i < firstName.length; i++) {
                    if (nameSearch.equals(firstName[i])) {
                        System.out.println("The name " +
                                   firstName[i]
                                   +
                                   " was found "
                                   +
                                   "with the phone number "
                                   +
                                   firstName
                                   [i]);
                    }
                }
            }
        }
    }

    public static void main(String args[]) {
        JavaApplication9 show = new JavaApplication9();
        show.getInfo();
    }
}
您应该使用集合,例如ArrayList,而不是数组。在java中,数组的大小是固定的,它们不是动态的

如果您确实想要删除并保留一个数组,这不是一个好主意,那么您应该使用null作为sentinel值,这意味着null元素被删除。然后,您必须更改您的其他方法,以便在程序的所有其他方面尊重null的含义


使用ArrayList…

如果您实际上仍然必须使用数组,您可以从数组中删除项目,这是一种建设性的方式。您所需要做的就是创建一个比原始数组小一倍的新数组,并将所有相关项复制到新数组中。我编写了一个示例,演示如何从数组中删除项

代码如下:


希望这有帮助。

您要从哪个阵列中删除?您是如何尝试从中删除的?你能在一个十行程序而不是这堵代码墙中重现你的问题吗?在这段代码中没有真正的删除尝试,它将成为最后一条if-else语句,以防userChoice为2读取getInfo开头的菜单选项