这是课堂作业。她让我们分两部分使用数组和数组列表。基本上她向我们展示了如何使用arraylist比阵列更容易。
我在使阵列部件工作时遇到了很多麻烦。
使用main方法创建一个名为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);
}
}
}
我试过弄乱元素位置。它打印不正确,因为我有背对背的meg,它用第二个meg取代了第一个meg。我能在这做什么?
答案 0 :(得分:1)
像这样更改你的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开始j,而不是m + 1。这样你就可以删除customerName [m]中的“Meg”,并将所有内容向前移动。
编辑:循环的while部分正在跳过数组中的最后一个元素。
答案 1 :(得分:0)
如果您只删除其中一个Meg
,可能是因为您跳过了第二个。
在删除后移动元素后,根据您的代码,您接下来要检查哪个元素?这是你需要检查的吗?
答案 2 :(得分:0)
您不仅要将一个元素向左移动,还要在最后一个索引处放置一个nil值。所以,我会提出像
这样的东西for(int j = m+1;j < customerName.length-1;j++)
{
customerName[j]= customerName[j+1];
}
customerName[customerName.length-1] = "";