1

deque システムを実装するために Java にいくつかの宿題があります。私は他のメソッドを作成しましたが、それらは私のテストに合格しました。しかし、私は最後のものを削除することに問題があります。私はこれまでのところこれを持っています。

//remove the element at the back of the deque
public int removeBack()
{
    int size = a.size();
    size--;

    if( size > 0 )
    {
        int last = a.get(size);
        last--;
        a.remove(last);
    }

    size = a.size();

    return size;
}

これが失敗する JQuery テストです。

    Deque d = new Deque(1);
    d.insertBack(1);
    assertEquals(1, d.length());
    int b = d.removeBack();
    assertEquals(0, b);
    // java.lang.AssertionError: expected:<1> but was:<0>

誰にもアイデアはありますか?私はこれでどこが間違っているのか本当にわかりません。

乾杯

4

2 に答える 2

1

あなたのコードは混乱しています。

d.insertBack(1);   <---- you add one element.
assertEquals(0, d.length()); <--- length is expected to be 1
int b = d.removeBack();  <---- you remove one element, and return the new length (!)
assertEquals(1, b); <----- b = length after removing = 0

おそらく何をするつもりだったのでしょう:

public int removeBack() {
    return a.remove(a.size() - 1); // Remove and return last element.
}

(注: リストのサイズではなく、必要に応じて照会できる最後の要素を返すのが標準size()です。)

于 2013-03-20T16:44:38.690 に答える
0

以下は不確かに見えます:

    int last = a.get(size);
    last--;
    a.remove(last);

ArrayList.remove(int)インデックスまたは値を取ることを期待しているかどうかに関係なく、これがどのように機能するかわかりません(インデックスが必要です)。

于 2013-03-20T16:40:50.827 に答える