如何删除数组中的元素?

时间:2011-06-26 22:44:25

标签: 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", "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();
    }
}

2 个答案:

答案 0 :(得分:3)

您应该使用Collection,例如ArrayList,而不是数组。数组在java中具有固定的大小,它们并不是动态的。

如果你真的想“删除”并保留一个数组(这不是一个好主意),那么你应该使用null作为标记值,​​这意味着null元素被“删除” ”。然后,您必须更改其他方法,以在程序的其他方面尊重null的含义。

使用ArrayList ...

答案 1 :(得分:0)

如果您实际上仍然需要使用数组,则可以建设性地从数组中删除项目。您只需创建一个新数组,该数组将比原始数组小一个,并将所有相关项复制到新数组中。我写了一个示例,演示如何从数组中删除项目。

代码在这里:http://pastebin.com/irnznxCA

希望有所帮助..