JAVA 利用集合完成斗地主的洗牌 发牌 排序 看牌功能

2023-10-26



/**
 * 斗地主,出牌规则大小
 * 小的在前面,大的在后面
 * 规则:黑红梅方
 * 3-K,2,小王,大王
 */


import java.util.*;

public class DouDiZhuSort {
    public static void main(String[] args) {
        //创建Map集合,HashMap,键是牌序号,值是点数+花色
        //序号利用变量,从0开始51
        //创建List;arraylist存储编号
        HashMap<Integer,String> hashMap = new HashMap<>();
        ArrayList<Integer> arrayList = new ArrayList<>();
        int index = 0;
        //定义数组2个,保存花色和点数
        String[] colors = {"♠","♥","♣","♦"};
        String[] numbers = {"3","4","5","6","7","8","9","10","J","Q","K","A","2"};

        for(String number : numbers){
            for(String color : colors){
                //map 存储序号,存储键值
                hashMap.put(index, color+number);
                arrayList.add(index);
                index++;
            }
        }

        //将王存储到集合中
        hashMap.put(52, "小王");
        arrayList.add(52);
        hashMap.put(53, "大王");
        arrayList.add(53);
        //System.out.println(hashMap);//存储的键是序号,只是点数和花色
        //System.out.println(arrayList);//存储是序号

        //洗牌
        Collections.shuffle(arrayList);

        //创建四个集合接收打牌
        //接收到的是牌的序号,对序号进行排序 TreeSet
        TreeSet<Integer> play1 = new TreeSet<>();
        TreeSet<Integer> play2 = new TreeSet<>();
        TreeSet<Integer> play3 = new TreeSet<>();
        TreeSet<Integer> bottom = new TreeSet<>();

        for(int i = 0;i<arrayList.size();i++){
            //最后三张牌是地主牌
            if(i >= arrayList.size()-3){
                bottom.add(arrayList.get(i));
            }else if(i % 3==0){
                play1.add(arrayList.get(i));
            }else if(i % 3==1){
                play2.add(arrayList.get(i));
            }else if(i % 3==2){
                play3.add(arrayList.get(i));
            }
        }

        lookPoker("玩家一", play1,hashMap );
        lookPoker("玩家二", play2,hashMap );
        lookPoker("玩家三", play3,hashMap );
        lookPoker("地主牌", bottom,hashMap );

    }

    //调用看牌的方法,手上的牌是个序号,使用需要到hashMap中查看点数
    public static void lookPoker(String name,TreeSet<Integer> treeSet,HashMap<Integer,String> hashMap){
        System.out.print(name + " ");
        //遍历集合是TreeSet,获取到的牌的序号
        for(Integer key : treeSet){
            //根据排序,当作键,到hashMap中去找
            String value = hashMap.get(key);
            System.out.print(value);
            System.out.print(" ");
        }
        System.out.println();
    }
}

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JAVA 利用集合完成斗地主的洗牌 发牌 排序 看牌功能 的相关文章

  • 为什么春季测试失败,不起作用@MockBean

    我尝试为一个简单的 spring boot 控制器创建我的第一个测试 但我得到Handler Type null 在浏览器中代码可以工作 但测试失败 我的应用程序使用 spring security 请帮助我解决问题并理解我的错误 谢谢 这
  • 获取 get 或 post 请求的响应的响应字符集

    我正在努力在 java web 应用程序中提取响应字符集 我在其中使用 Apache HTTP 客户端 例如 从 Content Type 标头获得的一个可能值是 text html charset UTF 8 然后我的代码将提取 符号之后
  • JMenuItem:如何设置具有3个键的加速器?

    请看下面的代码 import java awt import java awt event import javax swing public class MenuActions extends JFrame private JMenuBa
  • 抽象数据类型和接口

    抽象数据类型和接口有什么区别 例如我们有一个ListADT interface MyListADT
  • 交错立体声 PCM 线性 Int16 大端音频是什么样的?

    我知道网上有很多资源解释如何解交错 PCM 数据 在我当前的项目过程中 我已经研究了其中的大多数 但我没有音频处理的背景 而且我很难找到关于如何处理的详细解释exactly存储这种常见的音频形式 我确实知道我的音频将有两个通道 因此样本将以
  • struts2应用程序未运行

    我是 Maven 和 struts2 的新手 当我尝试运行我的程序时出现以下错误 严重 调度程序初始化失败 无法加载配置 操作 文件 E workspace metadata plugins org eclipse wst server c
  • PHP 和 ESB(使用 Mule)(ESB:企业服务总线)

    您在 PHP 项目中何时 何地以及为何使用 ESB 您认为在何处 何时以及为何在 PHP 项目中使用 ESB 有意义 ESB 以及像 Mule 这样的 ESB 促进者 是否提供了 PHP 和本地 LAMP 技术所缺乏的任何功能 Edit 我
  • 如何在 Android 上将 ISO 8601 字符串解析为 Java 日期 [重复]

    这个问题在这里已经有答案了 我正在 Android 上创建一个与服务器通信的应用程序 该服务器给我返回了一个ISO 8601 http en wikipedia org wiki ISO 8601日期字符串 如下所示 2014 11 21
  • 使用 Java Google App Engine 批量加载程序将整个数据存储区下载到一个 csv 文件

    我目前正在使用 kind参数来指定下载的类型和 filename指定要生成的 csv 文件的名称 这 rps limit bandwidth limit and batch size用于加速下载 例如 要下载我正在使用的游戏类型 appcf
  • Groovy 2.0.1,我自己的类上有 GroovyCastException?

    我在我的网络应用程序项目中广泛使用 Groovy 类 我可以创建类型的实例 定义为 groovy 类 但以后永远不能转换回它 GroovyCastException发生 org codehaus groovy runtime typehan
  • 从命令行进行 Liquibase 回滚不起作用

    我正在 Windows 环境中执行一个 Tomcat 应用程序 部署时会在 Oracle 数据库上创建 更新数据库架构 为此 我使用 Liquibase SDK 3 3 2 所以基本上我调用 SDK 并告诉它从我的changelog xml
  • W/Firestore:[CustomClassMapper]:Android 类没有设置器/字段

    我试图使用 Recyclerview 从 Documents 类加载数据 但 logcat 上出现错误 W Firestore 21 1 1 CustomClassMapper No setter field for Document Na
  • Android Edittext Onclick Datepickerdialog 棒棒糖中出现错误

    我正在使用日期选择器对话框 它在 kitkat 上运行正常 但是当我在棒棒糖上运行应用程序时 当我单击编辑文本时 它会打开一个日期选择器对话框 但当我选择日期时 它会不幸地给出停止错误 以下是 edittext 上日期选择器的代码 priv
  • Spring Hibernate 4 支持

    我正在使用 Hibernate 4 CR1 我的应用程序之前使用 Spring hibernate 支持 版本 3 我还没有找到任何相关信息 是否有任何迹象表明 Spring 何时 或哪个版本 将提供对 Hibernate 4 的支持 UP
  • Android Widget 实现

    嗨 如果这个问题很愚蠢 我提前道歉 我对 Android 编程相当陌生 而且学得很快 我刚刚创建了一个任务提醒应用程序 并且想将该应用程序转换 实现为一个可以在主屏幕上查看的小部件 有什么方法吗 这可能吗 Thanks 如果没有更多关于您的
  • 纹理映射和光照顶点着色器错误 Java OpenGL

    我正在尝试将纹理映射到 3D 立方体并尝试编写着色器以使其具有照明和纹理 我尝试过只编写纹理着色器并且它有效 我还尝试过仅将 3D 值设置为红色的照明着色器 并且该照明着色器也可以工作 但当我尝试将两者结合起来时 我遇到了问题 我在下面提供
  • 从 blob 反序列化 java 对象

    首先 我很抱歉 我要问一些愚蠢的问题 我根本不懂java 也不知道我们是否可以问这样的问题 如果没有 删除我的主题 oracle中有一个存储blob的表 它是二进制的 我能够解码它 输出看起来像这样 sr com epam insure c
  • 使用java连接到VPN后面的http服务器

    我想通过 VPN 连接到 REST Web 服务 Java 有没有办法在不使用操作系统功能的情况下建立到 VPN 网关的 pptp l2tp ipsec 连接和 HTTP 请求隧道 这很重要 因为我将从 servlet 连接到多个休息服务
  • 将任何文件读取为二进制字符串

    正如标题所示 有什么方法可以读取 Java 或任何其他语言 中给定文件 txt docx exe 等 的二进制表示形式 在java中 我知道如何按原样读取文件的内容 即 String line BufferedReader br new B
  • 无法声明接口:资源繁忙

    我正在使用 USB4Java 低级版本 并且基本上是根据这段代码工作的here http www mets blog com java usb communication usb4java 我在 Ubuntu 中工作 遇到了有关权限的问题

随机推荐

  • Python Django项目URL中包含另外一个urls模块

    在我们的项目中 不可能只有一个app 如果把所有的app的views中的视图都放在urls py中进行映射 肯定会让代码显得非常乱 因此django给我们提供了一个方法 可以在app内部包含自己的url匹配规则 而在项目的urls py中再
  • win11 设置系统环境变量

    由于win11的设置面板大变样 一时之间找不到高级设置进入系统环境变量的设置 面对这个问题可以这样 1 按win键 在搜索中输入 编辑系统环境变量 如图
  • 线程同步与线程安全

    1线程同步 同步 多线程访问临界资源时 必须进行同步控制 多进程或者多线程的执行并不完全是绝对的并行运行 又可能主线程需要等待函数线程的某些条件的发生 多线程的临界资源有全局数据 堆区数据 文件描述符 同步控制方式 1 1信号量 需要用到头
  • git repo工具介绍引入

    一 repo是什么 是什么 Repo是基于git的仓库管理工具 是一个python脚本 干什么 Repo用于同时管理多个git仓库 可以做统一的上传下载等操作 二 repo使用相关语法介绍 2 1 要使用repo首先需要有 manifest
  • iOS 捷径大全

    iOS 捷径大全 一 实用工具 支付助手3 0 新 微博热搜榜 新浪微博 网购历史价格查询3 0 小火箭 新 支付宝红包 新 任天堂红白机小游戏 你不会自己百度么 上朝网易云 早上好 晚安 天气预报 系统自带 捷径2 1 0 报时语音天气
  • JS数组去重之利用set数据结构去重

    在常用的JS去重方法中 都是通过循环遍历来去重 难免麻烦了不少 这边发现ES6中有更加方便的去重方式 记录一下 1 set数据结构 ES6提供了新的数据结构Set 类似于数组 只不过其成员值都是唯一的 没有重复的值 这边就是利用set没有重
  • RF4463F30半双工模组,伪全双工透传方案(STM32平台)(第二章,业务逻辑)

    RF4463F30半双工模组 伪全双工透传方案 STM32平台 第二章 业务逻辑 前言 核心代码编写 宏定义和变量声明 工具函数 功能函数 发送数据函数 时间管理函数 模块工作状态函数 将数据帧提取放入发送区的函数 接收数据函数 解包函数
  • 售前工程师工作内幕揭秘:面试实战技巧

    售前工程师工作内幕揭秘 面试实战技巧 前言 一 售前面试问题 基本就下面这些 二 售前工程师岗位普遍误区 三 售前工程师核心技能 四 面试中 主动出击 才是王道 五 对行业的了解是做好售前的基础 前言 看到网上很多关于售前工程师面试技巧的内
  • react项目搭建--相对较全面

    前言 简单记录一下第一次搭建react项目框架 之前只是在已搭建好的框架内去开发实现项目 没有自己动手搭建过 亲自动手实际操作 还遇到挺多问题的 参考了不少文献 帮助我解决并完成整个项目搭建的文献 都会在文章最后附上链接 感兴趣的可以都看一
  • 网络安全之数据链路层安全协议

    前言 本章将会讲解数据链路层上的安全协议 目录 前言 一 数据链路层安全协议简介 1 数据链路安全性 二 局域网数据链路层协议 1 本地链路局域网 LAN 2 广域网 WAN 3 IEEE802局域网数据链路层协议 1 数据链路层包括逻辑链
  • Python爬虫-17-案例:利用爬虫框架scrapy ,爬取JavaScript动态加载网页,将图片下载至本地

    新建项目 1 在cmd中创建爬虫项目 2 项目结构 由于基础模板设置这里会默认新建一个images py文件 不设置的话这边可以直接写也是可以的 3 设置settings 图片下载地址分析 1 查看萌女最新选项的图片 2 查看请求信息 发现
  • 新建android studio项目错误,提示AppcompatActivity有问题

    直接上图解决办法 希望后来者少走弯路
  • LAMMPS-使用MATLAB计算径向分布函数

    LAMMPS 使用MATLAB计算径向分布函数 在分子动力学模拟中 径向分布函数 Radial Distribution Function 简称RDF 是一种重要的统计工具 用于描述原子或分子之间的空间分布情况 通过计算RDF 我们可以获得
  • 腾讯云TencentOS Server3.1(TK4)系统镜像如何?兼容CentOS

    腾讯云服务器TencentOS Server系统镜像即Tencent Linux 腾讯云研发的Linux操作系统 TencentOS Server免费使用 在CentOS上开发的应用程序可直接在TencentOS Server上运行 Lin
  • 指令和数据都用二进制代码存放在内存中,从时空观角度回答CPU如何区分读出的代码是指令还是数据

    指令用来确定 做什么 和 怎样做 数据是 做 的时候需要原始数 计算机可以从时间和空间两方面来区分指令和数据 在时间上 取指周期从内存中取出的是指令 而执行周期从内存取出或往内存中写入的是数据 在空间上 从内存中取出指令送控制器 而执行周期
  • 父类,子类与继承

    1 父类 子类 对于父类 就像一种包含关系 父类中的所有的公开的都可以给子类 而子类中特有的公开属性 父类没有 例 对于人这个类为学生类的父类 人有的属性 学生也有 但学生有职业为学生这个特有属性 父类可以有很多子类 即人这个类也可以是工人
  • 移动开发者大会次日观感

    作者 朱金灿 来源 http blog csdn net clever101 继续是2011移动开发者大会的观感 第二天是进行的主题论坛 分别有下面一些主题 开放平台与技术 产品与设计 移动游戏 推广与盈利 电子商务 创业投资与商业模式和新
  • AD PCB画图透明度

    0 透明度 默认 40 透明度 较好 70 透明度
  • ORM-c++解析数据库

    C 的 ORM 框架 OOS http www open open com lib view open1377143228741 html
  • JAVA 利用集合完成斗地主的洗牌 发牌 排序 看牌功能

    斗地主 出牌规则大小 小的在前面 大的在后面 规则 黑红梅方 3 K 2 小王 大王 import java util public class DouDiZhuSort public static void main String arg