所以我正在使用这个在线图书工作,我通过了测试阶段而不是作业。它要求我使用add()和remove()方法从列表中删除一个数字,并添加另一个数字来替换我取出的数字。例如,原始列表为101 200 103
,我必须删除200
并添加100
和102
才能生成此订单:100 101 102 103
。我能够为该场景编写代码,但现在看起来我需要使这个add()和remove()方法更通用。我会说明我的意思。
路线
通过擦除200修改现有的ArrayLists的内容,然后 在所示位置插入100和102。使用ArrayList的remove() 并且仅添加()。以下程序的示例输出:
100 101 102 103
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检查最初101 200 103
您的输出:
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
如何使此代码完全正常工作?我觉得这样的事情很简单,但我却无视它。
答案 0 :(得分:1)
当我们查看两个测试的预期输出时:从列表101 200 103
中,他们预计会删除200个。从6 7 8 9
开始,他们希望删除7。在这两种情况下,它都是索引1处的项目(因为索引是从0开始的)。而不是
numsList.remove(new Integer(200));
DO
numsList.remove(1);