因此,我正在处理此在线图书分配,并且我通过了测试阶段,但未通过分配。它要求我使用add()和remove()方法从列表中删除一个数字,并添加另一个数字来替换我取出的内容。因此,例如,原始列表为101 200 103
,我必须删除200
并添加100
和102
才能执行此命令:100 101 102 103
。我可以针对这种情况进行编码,但是现在看来我需要使此add()和remove()方法更通用。我会明白我的意思。
方向
通过擦除200来修改现有ArrayList的内容,然后
在所示位置插入100和102。使用ArrayList的remove()
并且仅add()。以下程序的示例输出:
100101102103
import java.util.ArrayList;
public class ArrayListADT {
public static void printArray(ArrayList<Integer> numsList, int numOfElem) {
int i = 0;
for (i = 0; i < numOfElem; ++i) {
System.out.print(numsList.get(i));
System.out.print(" ");
}
System.out.println("");
}
public static void main (String [] args) {
ArrayList<Integer> numsList = new ArrayList<Integer>();
int numOfElem = 4;
numsList.add(new Integer(101));
numsList.add(new Integer(200));
numsList.add(new Integer(103));
// CODE ABOVE THIS COMMENT CANNOT BE MODIFIED
numsList.remove(new Integer(200));
numsList.add(0, new Integer(100));
numsList.add(2, new Integer(102));
// CODE BELOW THIS COMMENT CANNOT BE MODIFIED
printArray(numsList, numOfElem);
return;
}
}
我拥有的代码允许完成初始请求(
101 200 103 -> 100 101 102 103
)。最初用numsList检查101200103
您的输出:
100 101 102 103
但是,它出现另一个测试,但失败。
最初用numsList检查6 7 8 9
预期输出:
100 6 102 8 9
您的输出:
100 6 102 7 8
在这两个测试中,原始的第一个数字(
n0
)代替了原始的第二个数字(n1
),并且n1
从列表中删除。此外,100
和102
似乎也需要保留在代码中,因为它们也已通过6 7 8 9
进行了测试。我还尝试在代码中尝试numsList.remove(new Integer(101));
和numsList.remove(1, new Integer(101));
来查看错误信息。错误语句如下:最初用numsList检查6 7 8 9
预期输出:
100 6 102 8 9
您的输出:
100 101 102 6 7
如何使此代码完全起作用?我觉得这很简单,但看不到它。
最佳答案
当我们查看两个测试的预期输出时:从列表101 200 103
中,他们希望删除200个。他们希望从6 7 8 9
中删除7。在这两种情况下,它都是索引为1的项(因为索引是从0开始的)。所以代替
numsList.remove(new Integer(200));
做
numsList.remove(1);
关于java - 缺少一些代码;具有Add()和Remove()方法的ArrayList模式,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40077702/