1

クラスのリセット関数を実装しようとしていますが、最も簡単な方法はremoveAll()、arraylist で使用してコンストラクターを呼び出すことです。ただし、構文が間違っているため、それもうまくいかないようです。できないことを試しています。

removeAll()今のところ、私は動作するメソッドを持っていますが、呼び出されたコンストラクターから繰り返されるコード (すべてステートメントを期待) であるため、クリーンアップしたいと思いStandardDeck()ます。

public void reset(){
    cardArray.removeAll(cardArray);
    for(int suit = 0; suit < 4; suit++){
        for(int rank = 0; rank < 13; rank++){
            PlayingCard card = new PlayingCard(suit, rank);
            cardArray.add(card);
        }
    }
}
4

1 に答える 1

3

私があなたの必要性をよく理解しているなら、あなたはこれを望んでいます:

public class StandardDeck {

    List<PlayingCard> cardArray = new ArrayList<>();

    public StandardDeck() {
       reset();
    }

    public void reset() {
        cardArray.clear();
        for(int suit = 0; suit < 4; suit++){
          for(int rank = 0; rank < 13; rank++){
            PlayingCard card = new PlayingCard(suit, rank);
            cardArray.add(card);
          }
        }
    }
}

ループを複製する必要はありません。前に指摘したように、クリアはリストをクリアするための標準的かつ最適なソリューションです。

于 2013-03-22T17:18:24.570 に答える