删除整行java的值

时间:2016-02-08 02:09:00

标签: java arrays

我有一个包含10行和4列的String数组,用于保存联系信息。如果用户想删除一个联系人,但保留10行和4列 - 不以任何方式使用列表 - 这是如何完成的?例如:

contacts[0][0] = fName; //Charlie
        contacts[0][1] = lName; //Brown
        contacts[0][2] = pNum; //(309)555-1212
        contacts[0][3] = age1; //10
        contacts[1][0] = fName1; //Sally
        contacts[1][1] = lName; //Brown
        contacts[1][2] = pNum; //(309)555-1212
        contacts[1][3] = age3; //8

现在,用户想要从联系人中删除Charlie Brown,并移动所有其他行以填充空白区域,共保留10行和4列。

最新的尝试是:

private void removeContact(String[][] contacts)
    {   
        Scanner input = new Scanner(System.in);
        String lName;
        String fName;
        int fIndex;
        int lIndex;
        System.out.println("What is the first name of the contact to remove?");
        fName = input.nextLine();
        System.out.println("What is the last name of the contact to remove?");
        lName = input.nextLine();
        boolean found = false;

        for (int i = 0; i < contacts.length; i++) 
        {
            for (int j = 0; j < 4; j++)
            {               
                if (contacts[i][0].equalsIgnoreCase(fName) && contacts[i][1].equalsIgnoreCase(lName))
                {
                    found = true;
                    break;
                }
                else 
                {
                    System.out.println("That contact was not found.");
                    return;
                }
            }
            if (found) 
            {
                contacts[i][0] = null;
                contacts[i][1] = null;
                contacts[i][2] = null;
                contacts[i][3] = null;
                return;
            }                                   
        }
    }

如果您只想删除Charlie Brown,但是对于任何其他行......它不起作用

3 个答案:

答案 0 :(得分:0)

如果要使用数组,则必须编写for循环代码以移动元素。

实现这一目标:

int ind; //the index you'd like to remove.
for(int i = ind + 1; i < array.length; i++){
    array[i - 1] = array[i];
}
//set last value to nulls or something.

考虑一个ArrayList:https://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html它会为你完成所有的转移。

此外,您可能希望生成People个对象,并使您的数组(或ArrayList)成为People之一。这样,您就不必使用任意数字跟踪联系人的属性,并且可以使用更易读和可重复使用的代码。

答案 1 :(得分:0)

您可以移动所有行并替换最后一行。

 System.arrayCopy(contacts, 1, contacts, 0, contacts.length-1);
 Arrays.fill(contacts[contacts.length-1] = new String[4], "");

答案 2 :(得分:0)

如果这里的顺序无关紧要,那么只要将数组中的最后一个元素复制到被删除的位置并将size变量减一(我假设您保留了地址簿的数量),效率会更高变量中数组中的条目。)