java实现4

德德州州扑扑克克问问题题 :一副牌中发五张扑克牌给你:让你判断数字的组成:
有以下几种情况:
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 +
                '}';
    }
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源】:包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发、大数据、课程资源、音视频、网站开发等各种技术项目的源码。包括STM32、ESP8266、PHP、QT、Linux、iOS、C++、Java、MATLAB、python、web、C#、EDA、proteus、RTOS等项目的源码。 【项目质量】:所有源码都经过严格测试,可以直接运行。功能在确认正常工作后才上传。 【适用人群】:适用于希望学习不同技术领域的小白或进阶学习者。可作为毕设项目、课程设计、大作业、工程实训或初期项目立项。 【附加价值】:项目具有较高的学习借鉴价值,也可直接拿来修改复刻。对于有一定基础或热衷于研究的人来说,可以在这些基础代码上进行修改和扩展,实现其他功能。 【沟通交流】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。鼓励下载和使用,并欢迎大家互相学习,共同进步。【项目资源
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值