这是课堂作业。她使我们分两部分使用数组和数组列表。基本上,她向我们展示了如何使用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/