因此,我正在处理此在线图书分配,并且我通过了测试阶段,但未通过分配。它要求我使用add()和remove()方法从列表中删除一个数字,并添加另一个数字来替换我取出的内容。因此,例如,原始列表为101 200 103,我必须删除200并添加100102才能执行此命令: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从列表中删除。此外,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


如何使此代码完全起作用?我觉得这很简单,但看不到它。

最佳答案

当我们查看两个测试的预期输出时:从列表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/

10-10 09:54