德德州州扑扑克克问问题题 :一副牌中发五张扑克牌给你:让你判断数字的组成:
有以下几种情况:
1:四条:即四张一样数值的牌(牌均不论花色)2:三条带 一对
3:三条带两张不相同数值的牌
4:两对
5:顺子 包括 10,J,Q,K,A
6:什么都不是
7:只有一对
java实现:
package com.example.demo;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* Created by Administrator on 2019/4/4.
*/
public class Test4 {
public static void main(String[] args) {
List<String> fiveCards = getFiveCards();
Set<String> exist = new HashSet<>();
List<Card> cardList = new ArrayList<>();
for (String s : fiveCards) {
if (exist.contains(s)) {
for (int i = 0; i < cardList.size(); i++) {
Card card = cardList.get(i);
if (s.equals(card.getType())) {
card.setCount(card.getCount() + 1);
}
}
} else {
exist.add(s);
Card card = new Card(s, 1);
cardList.add(card);
}
}
System.out.println(cardList);
System.out.println(getResult(cardList));
}
private static String getResult(List<Card> cardList) {
int cardSize;
if ((cardSize = cardList.size()) == 2) {
boolean flag = false;
for (Card card : cardList) {
if (card.getCount() == 4) {
return "四条";
} else {
flag = true;
}
}
if (flag) {
return "三条带一对";
}
}
if (cardSize == 3) {
boolean isThree = false;
boolean isTwo = false;
int isTwoCount = 0;
for (Card card : cardList) {
if (card.getCount() == 3) {
isThree = true;
continue;
}
if (card.getCount() == 2) {
isTwo = true;
isTwoCount += 1;
}
}
if (isThree) {
if (isTwo == false) {
return "三条带两张不相同数值的牌";
}
}
if (isTwoCount == 2) {
return "两对";
}
}
if (cardSize == 4) {
return "只有一对";
}
if (cardSize == 5) {
List<Integer> newList = new ArrayList<>();
for (int u = 0; u < cardList.size(); u++) {
Card card = cardList.get(u);
String s = card.getType();
if (s.equals("J")) {
card.setType("11");
} else if (s.equals("Q")) {
card.setType("12");
} else if (s.equals("K")) {
card.setType("13");
} else if (s.equals("A")) {
card.setType("14");
} else if (s.equals("王")) {
card.setType("20");
}
newList.add(Integer.parseInt(card.getType()));
}
boolean isContinuity = true;
for (int i = 1; i < newList.size() - 1; i++) {
if (newList.get(i) - newList.get(i - 1) != 1 || (newList.get(i + 1) - newList.get(i) != 1)) {
isContinuity = false;
break;
}
}
if (isContinuity){
return "顺子";
}
}
return "什么都不是";
}
private static List<String> getFiveCards() {
String[] str = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "J", "Q", "K", "A"};
List<String> list = new ArrayList<>();
list.add("王");
list.add("王");
for (int i = 0; i < str.length; i++) {
for (int j = 0; j < 4; j++) {
list.add(str[i]);
}
}
List<String> fiveCards = new ArrayList<>();
for (int n = 0; n < 5; n++) {
int index = (int) (Math.random() * list.size());
fiveCards.add(list.get(index));
}
return fiveCards;
}
}
class Card {
private String type;
private int count;
public Card() {
}
public String getType() {
return type;
}
public Card(String type, int count) {
this.type = type;
this.count = count;
}
public void setType(String type) {
this.type = type;
}
public int getCount() {
return count;
}
public void setCount(int count) {
this.count = count;
}
@Override
public String toString() {
return "Card{" +
"type='" + type + '\'' +
", count=" + count +
'}';
}
}