У меня есть метод Shuffle, который перетасовывает колоду карт. Каждая карта имеет разрешенное поле, которое будет либо истинным, либо ложным в зависимости от того, было ли оно обработано или нет.Если Statement не работает с оператором OR
Метод тасования задает для каждого поля карты значение false. Я пытаюсь остановить его от установки определенных карт на false, в зависимости от того, находится ли карта в настоящее время в раздаче дилеров/игроков.
public void shuffle(){
Collections.shuffle(deck);//Shuffles the deck
for(Card card : deck){//For each card in the deck
if(!Game.playersHand.contains(card) || !Game.dealersHand.contains(card)){//If card is not in dealers/players hand
card.setDealt(false);//card is no longer dealt
}//end if
}//end for
}//end shuffle
Вышеуказанный оператор if не работает. Он будет отмечать каждую карту как ложную, независимо.
Если я:
public void shuffle(){
Collections.shuffle(deck);
for(Card card : deck){
if(!Game.playersHand.contains(card)){
card.setDealt(false);
}
}
}//end shuffle
Это предотвратит наносимый поле в карты в playersHand от того установлен неверно.
Я не уверен, почему мой || операнд в этом случае не работает.
Предполагаю, что на самом деле вы реализовали метод '.equals' и' .hashCode' для 'Card', так что метод' contains' работает правильно? – Alnitak