这是课堂作业。她使我们分两部分使用数组和数组列表。基本上,她向我们展示了如何使用arraylist比数组更容易。

我在使阵列部件正常工作方面遇到很多麻烦。



使用主要方法创建一个名为CustomerLister1的类,该方法实例化一个名为customerName的String对象数组。数组
应该有六个String对象的空间。使用初始化列表
将以下名称放入数组:

Chris
Lois
Meg
Peter
Stewie

编写一个增强的for循环以显示名称数组。最后一个数组元素显示什么?为什么是那个值?
将字符串“ Meg”和“ Brian”分别添加到索引3和4中,以便该数组包含以下元素:

Chris
Lois
Meg
Meg
Brian
Peter
Stewie

编写一个增强的for循环以显示名称数组。
编写第二个传统的for循环,检查每个元素中的字符串“ Meg”,如果在数组中找到了,则将其删除,然后将其移动
其余元素,并显示名称数组。都是实例
正确地从阵列中删除“ Meg”?



这是我的代码

public class CustomerLister1
{

public static void main(String[] args)
{
    String[] customerName = new String[7];
    customerName[0] = "Chris";
    customerName[1] = "Lois";
    customerName[2] = "Meg";
    customerName[3] = "Peter";
    customerName[4] = "Stewie";

    for (int i = customerName.length-1;i > 3; i--)
    {
        customerName[i] = customerName[i - 2];
    }
    customerName[3] = "Meg";
    customerName[4] = "Brian";

    for (int m = 0; m <= customerName.length-1; m++)
    {
        if(customerName[m].equals("Meg"))
        {
            for(int j = m+1;j < customerName.length-1;j++)
            {
                customerName[j]= customerName[j-1];

            }

        }

    }

    for (String element : customerName)
    {

        System.out.println(element);
    }

}
}


我试图弄乱元素的位置。它不会正确打印,因为我背对背有梅格,并且用第二个梅格替换了第一个梅格。我在这里能做什么?

最佳答案

像这样更改您的if语句:

if(customerName[m].equals("Meg"))
{
    for(int j = m;j < customerName.length;j++)
    {
        if(j < customerName.length-2) {
            customerName[j]= customerName[j+1];
        } else {
            customerName[j]="";
        }
    }
m--;
}


通过将i减1,您将再次击中相同的索引。

而且AmitD是正确的;您需要customerName [j + 1],而不是[j-1]。

哦,您需要正确处理数组的结尾;当没有customerName [7]时,不想尝试设置customerName [6] = customerName [7]。

编辑:啊,您需要在m而不是m + 1处开始j。这样,您就可以删除customerName [m]上的“ Meg”,并将其前面的所有内容向后移动。

编辑:循环的while部分正在跳过数组中的最后一个元素。

关于java - 阵列无法删除重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12979217/

10-10 20:11