1

私がやっているプログラムで助けが必要です。したがって、たとえば次のように配列を割り当てました。

hand = new PlayingCard[5]; //5 Cards in a hand

hand[0]との情報を設定しましたhand[1]

hand[0] = deck.dealACard(); 
hand[1] = newDeck.dealACard();

私の質問は、現在手札にあるカードの枚数を計算しようとすると[ ]、「2」ではなく「5」になるということです。

numCards = hand.length;

numCards を「2」にするにはどうすればよいですか?

4

4 に答える 4

4

簡単に使用できます:

public static int countNonNullElements(Object[] array) {
    int count = 0;
    for (int i = 0; i < array.length; i++) {
        if (array[i] != null) {
            count++;
        }
    }
    return count;
}

ただし、通常は、さまざまなサイズのコレクションを表すには、List<E>代わりに (たとえば) を使用することをお勧めします。ArrayList<E>

于 2013-04-22T12:46:05.157 に答える
1

あなたはループすることができます:

int count = 0
for (PlayingCard c : hand) {
    if (c != null) count ++
}
//count is now how many cards there are
于 2013-04-22T12:46:14.750 に答える
0

配列全体を反復してインデックスに要素があるかどうかを確認するメソッドを実装するか、ローカル変数に数値を保持し、追加と削除によって制御することができます。

できれば2枚目がおすすめです。最初のソリューションのように、線形時間ではなく、1 つのローカル変数の価格に対して一定時間で答えが得られます。

于 2013-04-22T12:46:38.737 に答える
0

一度初期化すると固定サイズになる配列を作成しています。つまり、あなたの場合は..PlayingCard5

使用できますList

List<PlayingCard> playingCardList=new ArrayList();
playingCardList.add(new PlayingCard());
playingCardList.add(new PlayingCard());

のサイズはplayingCardList2 になります

于 2013-04-22T12:47:02.050 に答える