我的删除方法不起作用

时间:2016-06-22 23:50:15

标签: java

创建一个程序,跟踪用户输入的以下信息:

First NameLast NamePhone NumberAge

现在 - 让我们将它存储在一个多维数组中,该数组将容纳其中10个联系人。 所以我们的多维数组需要10行4列。 您应该能够在阵列中添加,显示和删除联系人。 * /

import java.util.Scanner;

public class compLab2 {

    public static void main(String[] args) {

        Scanner input = new Scanner(System.in); 
        String[][] contacts = new String [10][4]; 
        System.out.println("Select your options: \n");

        while(true){
            // Give the user a list of their options
            System.out.println("1: Add a new contact to list.");
            System.out.println("2: Remove a contact from the list.");
            System.out.println("3: Display contacts.");
            System.out.println("0: Exit the list.");

            // Get the user input
            int userChoice = input.nextInt();

            switch(userChoice){
                case 1:             
                    addContacts(contacts);
                    break;

                case 2: 
                    removeContacts(contacts);
                    break;

                case 3: 
                    displayContacts(contacts);
                    break;

                case 0: 
                    System.out.println("Goodbye!");
                    System.exit(0);
            }
        }
    }

    private static void addContacts (String [][] contacts) {
        Scanner input = new Scanner(System.in); 
        for (int i = 0; i < 10; i++) {
            if (contacts[i][0] == null || contacts[i][0].equals(null)) {
                contacts[i][0] = input.nextLine();
                contacts[i][1] = input.nextLine();
                contacts[i][2] = input.nextLine();
                contacts[i][3] = input.nextLine();
                boolean Inserted = true;
                break;
            }
        }            
    }

    private static void removeContacts(String [][] contacts) {
        Scanner input = new Scanner(System.in);
        System.out.println("Enter the name of the contact you want to remove: ");
        String removeContact = input.nextLine();
        for(int i=0; i<contacts.length; i++){
            for(int j = 0; j <contacts[i].length; j++){
                if(contacts[i][j].equals(removeContact)) {
                    contacts[i][0]=" "; 
                    contacts[i][1]=" "; 
                    contacts[i][2]=" ";
                    contacts[i][3]=" "; 
                }
            }
            break;                  
       }
   }

   private static void displayContacts(String [][] contacts) {
       for (int i = 0; i< contacts.length; i++) {
           for (int j= 0; j < contacts[i].length; j++) {
               System.out.print(contacts[i][j] + " ");
           }
           System.out.println();
       }
    }
}

2 个答案:

答案 0 :(得分:1)

  • 你必须在if条件内移动你的休息(一旦元素被删除,就会破坏循环)否则你的第一个for循环将在i = 0条件下中断。
  • 如果条件允许,您必须使用removeContact检查contacts[i][j],因为contacts[i][j]可以为空。

您可以在下面找到代码

    if (removeContact != null) { //removeContact should not be null
        for (int i = 0; i < contacts.length; i++) {
            for (int j = 0; j < contacts[i].length; j++) {
                if (removeContact.equals(contacts[i][j])) { //removeContact is not null so check removeContact with contacts[i][j]
                    contacts[i][0] = " ";
                    contacts[i][1] = " ";
                    contacts[i][2] = " ";
                    contacts[i][3] = " ";
                    break; //break the loop once you remove
                }
            }
        }
    }

答案 1 :(得分:0)

您应该设置null

white space(" ") insteam
if (removeContact != null) {
    for (int i = 0; i < contacts.length; i++) {
        for (int j = 0; j < contacts[i].length; j++) {
            if (removeContact.equals(contacts[i][j])) {
                contacts[i][0] = null;
                contacts[i][1] = null;
                contacts[i][2] = null;
                contacts[i][3] = null;
                break;
            }
        }
    }
}

因为您在添加联系人时检查了null。因此,设置null将释放数组中的空格,并允许您向该空间添加新联系人。

此外,您应该在显示联系人

期间检查空条目
private static void displayContacts(String [][] contacts) {
    for (int i = 0; i < contacts.length; i++) {
        if (contacts[i][0] != null) {
            for (int j= 0; j < contacts[i].length; j++) {
                System.out.print(contacts[i][j] + " ");
            }
            System.out.println();
        }
    }
}

具有自定义类的ArrayList可以轻松解决此问题。