プログラムが最初に2つのペアをチェックした後でのみ、1つのペアを認識するのに問題があります。最初に1つのペアをチェックすると、問題がないことがわかります。しかし、最初に2つのペアをチェックしてから、1つのペアをチェックすると、それが見つかりません。どんな助けでもいただければ幸いです。
package card.game.simulator;
import java.util.ArrayList;
public class RankingUtility {
private RankingEnum rank;
public String getRankOfHand(ArrayList<Card> hand) {
System.out.printf("%s\n", hand.toString());
ArrayList<Card> rankingCards = getTwoPair(hand);
if(rankingCards != null) {
return "Two Pair!";
}
System.out.printf("%s\n", hand.toString());
rankingCards = getOnePair(hand);
if(rankingCards != null) {
return "One Pair!";
}
System.out.printf("%s\n", hand.toString());
return "You got nuthin...";
}
public boolean isSameSuit(ArrayList<Card> hand) {
CardSuitEnum suit = hand.get(0).getSuit();
for(Card card : hand) {
if(card.getSuit() != suit) {
return false;
}
}
return true;
}
public ArrayList<Card> checkPair(ArrayList<Card> hand) {
ArrayList<Card> checkedPair = new ArrayList<>();
for(Card card1 : hand) {
checkedPair.add(card1);
for(Card card2 : hand) {
if(!card1.equals(card2) && card1.getFace().equals(card2.getFace())) {
checkedPair.add(card2);
return checkedPair;
}
}
checkedPair.clear();
}
return null;
}
public ArrayList<Card> getTwoPair(ArrayList<Card> hand) {
ArrayList<Card> twoPair = new ArrayList<>();
ArrayList<Card> checkedPair = checkPair(hand);
if(checkedPair != null) {
twoPair.addAll(checkedPair);
hand.removeAll(checkedPair);
}
checkedPair = checkPair(hand);
if(checkedPair != null) {
twoPair.addAll(checkedPair);
return twoPair;
}
return null;
}
public ArrayList<Card> getOnePair(ArrayList<Card> hand) {
return checkPair(hand);
}
}