public HandRankings checkHandRankings(ArrayList<Card> cards) throws Exception {
		if (hasFourCards(cards) == false) {
			throw new CardsLengthUnmatchException(cards, CARDS_SET_LENGTH);
		}
		
		Card duplicatedCard = checkDuplicatedCards(cards);
		if (duplicatedCard != null) {
			throw new DuplicatedCardExistException(duplicatedCard); 
		}
		
		CardSorting.sortCardsByNumber(cards);
		HandRankings handRankings = new HandRankings();
		
		ArrayList<Card> newMade = makeMade(cards);
		int pattern = newMade.size();
		
		switch( pattern ) {
		case MADE : 
			handRankings = makeHandRankingWhenMade(newMade);
			break;
		case BASE : 
			handRankings = makeHandRanking(newMade, HandRankings.rankings.base);
			break;
		case TWOBASE : 
			handRankings = makeHandRanking(newMade, HandRankings.rankings.twobase);
			break;
		case NOBASE : 
			handRankings = makeHandRanking(newMade, HandRankings.rankings.nobase);
			break;
		default :
			handRankings = makeHandRanking(newMade, HandRankings.rankings.nobase);
			break;
		}
		
		return handRankings;
	}