0

我需要通过 arraylist 并将所有以x yor开头的单词删除到前面z

但是我的测试输出表明这种方法有一些逻辑错误。

代码:

/**
   * Moves any word that startw with x, y, or z to the front of the arraylist, but
   * otherwise preserves the order
   */
  public void xyzToFront()
  {
      int insertAt = 0;
      but otherwise preserves the order
      for (int i = 0; i < list.size(); i++) {     
          String temp = list.get(i);
          if (temp.startsWith("x") || temp.startsWith("y") || temp.startsWith("z")) {
              list.remove(i);
              list.add(0, temp);
          }
      }
  }

测试输出:

Actual: [yak, zebra, xantus, ape, dog, cat] - what is after executing
Expected: [xantus, zebra, yak, ape, dog, cat] - what we should have

如何解决这个麻烦?

4

1 回答 1

1

根据您的方法,该方法在上一个之前插入以 x、y 或 z 开头的每个下一个单词,以及实际和预期的输出,我认为您希望将这些单词按照删除的顺序插入到列表的前面。如果是这种情况,您可以只使用计数器变量并在先前删除后插入下一个单词。例如:

public void xyzToFront()
  {
      int insertAt = 0;
      but otherwise preserves the order
      for (int i = 0; i < list.size(); i++) { 
          if (temp.startsWith("x") || temp.startsWith("y") || temp.startsWith("z")) {    
              String temp = list.get(i);
              list.remove(i);
              list.add(insertAt++, temp);
          }
      }
 }
于 2013-07-06T15:13:48.017 回答