-1

私はJavaが初めてで、1週間以上解決しようとしてきた演習に行き詰まっており、何が間違っているのかわかりません。

ArrayList の最後の要素 (この場合は整数) を削除する必要があります。

問題は、テストを実行しても古い値が返されることです。

public static void removeLastOccurrence(int x, ArrayList<Integer> list) {
    if (list != null && !list.isEmpty()) {
       list.remove(list.size()-1);
    }
}

list.remove(list.lastIndexOf(x));も使用してみました。

しかし、このテストを実行すると、同じリストが返されます。

public class UTest{
    @Test
    public void testMultipleLast() {
        ArrayList<Integer> input = new ArrayList<Integer>(asList(1,1,3,5,7,1,5,9,1));
        ArrayList<Integer> result = new ArrayList<Integer>(asList(1,1,3,5,7,1,5,9));
        Solution.removeLastOccurence(1, input);
        assertEquals(result, input);
    }
}

パズルの小さなピースが欠けていると感じているので、かなりイライラしているので、誰かが助けて何が欠けているのか教えてくれたらいいのにと思います.

4

5 に答える 5

2

テストは次のようになります。元の投稿のテスト コードでは、実際にテストしようとしているメソッドを呼び出していません。

public class UTest
{
  @Test
  public void testMultipleLast() {
     ArrayList<Integer> input = new ArrayList<Integer>(asList(1,1,3,5,7,1,5,9,1));
     ArrayList<Integer> result = new ArrayList<Integer>(asList(1,1,3,5,7,1,5,9));

     // int x = ?
     ArrayList<Integer> actual = SomeClass.removeLastOccurrence(x, input)
     assertEquals(result, actual);
  }
 }

removeLastOccurrence()メソッドは次のことを行うことができます

if(list != null && !list.isEmpty()){
    list.remove(list.size() - 1);
}
于 2017-03-08T19:02:03.330 に答える
1

メソッドを使用したJava ArrayList APIによれば、ArrayList 内の位置にget(int index)ある要素を取得するだけです。indexこれはあなたが探している方法です:

public static void removeLastOccurrence(int x, ArrayList<Integer> list) {
    if (list != null && !list.isEmpty()) {
        list.remove(list.size()-1);
    }
}
于 2017-03-08T19:01:49.467 に答える