缺少代码的东西;使用Add()和Remove()方法的ArrayList模式

时间:2016-10-17 02:34:20

标签: java arrays

所以我正在使用这个在线图书工作,我通过了测试阶段而不是作业。它要求我使用add()和remove()方法从列表中删除一个数字,并添加另一个数字来替换我取出的数字。例如,原始列表为101 200 103,我必须删除200并添加100102才能生成此订单: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。此外,100102似乎需要保留在代码中,因为它们也会使用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

如何使此代码完全正常工作?我觉得这样的事情很简单,但我却无视它。

1 个答案:

答案 0 :(得分:1)

当我们查看两个测试的预期输出时:从列表101 200 103中,他们预计会删除200个。从6 7 8 9开始,他们希望删除7。在这两种情况下,它都是索引1处的项目(因为索引是从0开始的)。而不是

  numsList.remove(new Integer(200));

DO

  numsList.remove(1);