当前位置: 首页 > news >正文

小小扑克牌算法

1.定义一个扑克牌类Card:

package democard;
public class Card {public String suit;//表示花色public int rank;//表示牌点数@Overridepublic String toString() {return "{"+suit +rank+"}";}//实例方法,初始化牌的点数和花色public Card(String suit, int rank){this.suit=suit;this.rank=rank;}
}

2.实现游戏功能:

1.初始化一副牌

//初始化一副牌public List<Card> buyCard(){List<Card> cardlist = new ArrayList<>();//定义一个牌堆for(int i=0;i<suits.length;i++){for (int j = 1; j <=13 ; j++) {Card card=new Card(suits[i],j);//通过循环产生52个对象,将每一个对象的地址存放到牌堆(cardlist)当中cardlist.add(card);}}return cardlist;}

2.洗牌

//洗牌public void shuffleCard(List<Card> cardlist){Random random=new Random();//调用时间戳随机生成一个数for (int i = cardlist.size()-1; i >0; i--) {//让其与每一个位置的牌进行交换int randindex=random.nextInt(i);swap(cardlist,i,randindex);}}

3.交换牌

//交换牌public void swap(List<Card> cardlist,int i,int j){Card tmp=cardlist.get(i);cardlist.set(i,cardlist.get(j));cardlist.set(j,tmp);}

4.发牌

//发牌//每个人发五张,发给三个人public List<List<Card>> play(List<Card> cardlist){List<List<Card>> hand=new ArrayList<>();//定义一个二维数组,存放每一个一维数组的地址List<Card> hand1=new ArrayList<>();List<Card> hand2=new ArrayList<>();List<Card> hand3=new ArrayList<>();hand.add(hand1);//将每一位玩家的牌和二维数组产生联系hand.add(hand2);hand.add(hand3);for (int i = 0; i <3 ; i++) {for (int j = 0; j < 5; j++) {Card card=cardlist.remove(0);//从牌堆里删除第一张牌,类似于头删//将每删除的一张牌存到card当中,在添加给每一位玩家,实现了发牌的功能hand.get(i).add(card);}}return hand;//将二位数组的地址返回,以后调用者可以用该地址查看牌堆剩余的牌以及各个玩家的牌}

3.玩游戏

package democard;import java.util.List;public class Test {public static void main(String[] args) {Game game=new Game();List<Card> cardList=game.buyCard();System.out.println("洗牌前:"+cardList);game.shuffleCard(cardList);System.out.println("洗牌后:"+cardList);List<List<Card>> hand=game.play(cardList);for (int i = 0; i <3 ; i++) {System.out.println("第"+(i+1)+"个人的牌是:"+hand.get(i));}System.out.println("剩下的牌:"+cardList);}
}

最后实现的效果如下:

在这里插入图片描述
该算法是对List<List<Colletion ? extends E>> 的运用以及理解 ,希望大家支持!!

相关文章:

小小扑克牌算法

1.定义一个扑克牌类Card&#xff1a; package democard; public class Card {public String suit;//表示花色public int rank;//表示牌点数Overridepublic String toString() {return "{"suit rank"}";}//实例方法&#xff0c;初始化牌的点数和花色public…...

【第34章】Spring Cloud之SkyWalking分布式日志

文章目录 前言一、准备1. 引入依赖 二、日志配置1. 打印追踪ID2. gRPC 导出 三、完整日志配置四、日志展示1. 前端2. 后端 总结 前言 前面已经完成了请求的链路追踪&#xff0c;这里我们通过SkyWalking来处理分布式日志&#xff1b; 场景描述&#xff1a;我们有三个服务消费者…...

easy-es动态索引支持

背景 很多项目目前都引入了es&#xff0c;由于es弥补了mysql存储及搜索查询的局限性&#xff0c;随着技术的不断迭代&#xff0c;原生的es客户端使用比较繁琐不直观&#xff0c;上手代价有点大&#xff0c;所以easy-es框架就面世了&#xff0c;学习成本很低&#xff0c;有空大…...

SWC(Speedy Web Compiler)

概述 SWC 由 Rust 编写&#xff0c; 既可用于编译&#xff0c;也可用于打包。 对于编译&#xff0c;它使用现代 JavaScript 功能获取 JavaScript / TypeScript 文件并输出所有主流浏览器支持的有效代码。 SWC在单线程上比 Babel 快 20 倍&#xff0c;在四核上快 70 倍。 简…...

【计算机网络】传输层协议UDP

目录 一、端口号1.1 端口号范围划分1.2 认识知名端口号 二、UDP协议2.1 UDP协议端格式2.2 UDP的特点2.3 UDP的缓冲区2.4 UDP使用注意事项2.5 基于UDP的应用层协议 一、端口号 传输层协议负责数据的传输&#xff0c;从发送端到接收端。端口号标识一个主机上进行通信的不同的应用…...

Docker+PyCharm远程调试环境隔离解决方案

DockerPyCharmMiniconda实现深度学习代码远程调试和环境隔离 本文详细介绍了如何在局域网环境下&#xff0c;利用Docker、PyCharm和Miniconda构建一个高效的深度学习远程调试平台。首先在服务器&#xff08;server&#xff09;上&#xff0c;通过Docker构建包含不同CUDA环境的镜…...

数字化转型的理论框架对比:从多维视角指导企业成功变革对比DPBOKIT4ITCOBITTOGAF

数字化转型的多维框架解析 在数字化时代&#xff0c;企业如何有效实现数字化转型已成为其生存和发展的关键问题。然而&#xff0c;市场上关于数字化管理的各种框架和理论并存&#xff0c;企业需要根据自身的需求选择最适合的指导路径。本文将通过对几个核心理论框架的对比&…...

【C++掌中宝】深入解析C++命名空间:有效管理代码的利器

文章目录 前言1. namespace 的价值2. namespace 的定义3. 命名空间的本质4. 嵌套的命名空间5. 命名空间的使用6. using 指令7. 补充结语 前言 假设这样一种情况&#xff0c;当一个班上有两个名叫 Zara 的学生时&#xff0c;为了明确区分它们&#xff0c;我们在使用名字之外&am…...

2024/9/21 leetcode 21.合并两个有序链表 2.两数相加

目录 21.合并两个有序链表 题目描述 题目链接 解题思路与代码 2.两数相加 题目描述 题目链接 解题思路与代码 --------------------------------------------------------------------------- 21.合并两个有序链表 题目描述 将两个升序链表合并为一个新的 升序 链表并返…...

Python学习的主要知识框架

Python的主要学习知识点非常广泛且深入&#xff0c;但我可以为您概括一些核心的学习领域&#xff0c;帮助您系统地掌握Python编程。以下是Python学习的主要知识框架&#xff1a; 1. Python基础语法 数据类型&#xff1a;整数、浮点数、字符串、布尔值、列表、元组、字典、集合…...

LLaMA-Factory 使用 alpaca 格式的数据集

LLaMA-Factory 使用 alpaca 格式的数据集 flyfish alpaca 格式最初与Stanford大学的一个研究项目相关联&#xff0c;该项目旨在通过少量高质量的数据来微调大型语言模型。它受到了Alpaca模型&#xff08;一种基于LLaMA的指令跟随模型&#xff09;的影响&#xff0c;该模型是在…...

【Mysql】Mysql数据库基础

1.❤️❤️前言~&#x1f973;&#x1f389;&#x1f389;&#x1f389; Hello, Hello~ 亲爱的朋友们&#x1f44b;&#x1f44b;&#xff0c;这里是E绵绵呀✍️✍️。 如果你喜欢这篇文章&#xff0c;请别吝啬你的点赞❤️❤️和收藏&#x1f4d6;&#x1f4d6;。如果你对我的…...

一文彻底让你搞懂轨迹规划(总结)

机器人在运行中不可避免的会进行运动&#xff0c;那么就会产生出轨迹规划的概念。 轨迹规划的特点&#xff1a;用一定的函数形式表示控制量&#xff08;位置&#xff0c;速度&#xff0c;加速度&#xff09;的控制律&#xff0c;根据约束或最优目标&#xff0c;求取控制控制参…...

windows C++ 并行编程-异步消息块(二)

overwrite_buffer 类 concurrency::overwrite_buffer 类与 unbounded_buffer 类类似&#xff0c;只不过 overwrite_buffer 对象仅存储一条消息。 此外&#xff0c;当目标接收来自 overwrite_buffer 对象的消息时&#xff0c;不会从缓冲区中删除该消息。 因此&#xff0c;多个目…...

【软件基础知识】什么是 API,详细解读

想象一下,你正在使用智能手机上的天气应用。你打开应用,瞬间就能看到实时天气、未来预报,甚至是空气质量指数。但你有没有想过,这些数据是如何神奇地出现在你的屏幕上的?答案就在三个字母中:API。 API,全称Application Programming Interface(应用程序编程接口),是现代软件世…...

计算机四级-计算机网络

一、基础知识 1.对计算机网络发展具有重要影响的广域网是&#xff1a;ARPANET 随机争用型的介质访问控制方法起源于&#xff1a;ALOHANET 2.计算机网络发展阶段&#xff1a; A&#xff09;第一阶段的主要成果是计算机技术与通信技术的结合 B&#xff09;第二阶段的主要成果…...

【linux 获取时间】

linux 获取时间接口 我们在开发调试过程中&#xff0c;可能遇到一些和调用时序相关的问题&#xff0c;为了查看哪个步骤先调用&#xff0c;哪个步骤后调用&#xff0c;我们可以使用函数打印或者主动trace堆栈…但是有的时候我们需要排查2个接口调用的时间间隔&#xff0c;我们可…...

Dockerfile部署xxljob

使用Dockerfile部署xxljob 1. 背景 我们在使用定时任务调度时&#xff0c;通常会使用xxljob容器化部署xxljob&#xff0c;通常使用 docker pull xuxueli/xxl-job-admin:2.4.0 拉取镜像并启动容器。这种方式对于x86架构服务器来说&#xff0c;没有任何问题。但是在arm架构的服…...

Conda新建python虚拟环境问题

Conda新建python虚拟环境问题&#xff1a; 【问题1】 conda create --name yolov8 python3.10 -y Retrieving notices: …working… done Channels: defaults Platform: win-64 Collecting package metadata (repodata.json): failed UnavailableInvalidChannel: HTTP 404 NO…...

这几个优秀的工具网站真心值得推荐——搜嗖工具箱

即时工具 https://www.67tool.com/ 这是一个专注提升效率的办公工具网站&#xff1b;这也是一个拥有260多款自研在线工具和200多个客户端离线工具的服务网站&#xff1b;这还是一个可以满足包括视频处理、音频处理、图片处理、文档处理、文档转换、办公辅助、图表生成、文本工…...

无机布防火卷帘门价格怎么算?按尺寸定制,按需报价

无机布防火卷帘门作为建筑防火分区的核心设备&#xff0c;价格一直是工程采购的关注重点。很多用户在询价时&#xff0c;会发现不同厂家的报价差异较大&#xff0c;这是因为无机布防火卷帘门的价格并非按统一单价计算&#xff0c;而是完全根据项目的实际需求定制化核算。 &…...

为什么视频代剪辑会影响你的内容传播效果

为什么你精心拍的视频&#xff0c;发出去却没人看&#xff1f; 你有没有过这样的经历&#xff1a;花了一整天拍Vlog&#xff0c;素材画质高清、内容真实&#xff0c;可一剪出来就显得平淡无奇&#xff0c;点赞寥寥&#xff1f;或者婚礼当天感动全场&#xff0c;回看成片却像流水…...

新能源车轻量化为什么开始盯上高强镁合金?

续航&#xff0c;是悬在每一台纯电动汽车头上的达摩克利斯之剑。多充一度电、多堆一些正极材料&#xff0c;是一条路&#xff1b;但还有另一条路——把车造得更轻。 SAE&#xff08;美国汽车工程师学会&#xff09;的测算已经被反复引用&#xff1a;整车每减重100千克&#xff…...

毕业设计 yolov11骨折检测医疗辅助系统(源码+论文)

文章目录 0 前言1 项目运行效果2 课题背景2.1 研究背景2.2 国内外研究现状2.3 研究意义 3 设计框架&#xff08;骨折检测系统设计框架说明&#xff09;3.1. 系统架构图3.2. 技术选型3.2.1 核心组件3.2.2 辅助工具 3.3. 核心模块设计3.3.1 YOLO模型训练模块训练流程图关键伪代码…...

【MySQL数据库 | 第一篇】 概述

数据库相关概念&#xff1a; 数据库(Database)&#xff1a;数据库是指一组有组织的数据的集合&#xff0c;通过计算机程序进行管理和访问。数据库管理系统&#xff1a;操纵和管理数据库的大型软件SQL&#xff1a;操作关系型数据库的编程语言&#xff0c;定义了一套操作关系型数…...

别被忽悠了!2026亲测靠谱的AI论文网站|避坑精选版

2026 年学术写作工具已高度分化&#xff0c;千笔AI与ThouPen为全流程首选&#xff0c;豆包、DeepSeek 为专项强手&#xff1b;避坑关键&#xff1a;拒绝假文献、严控 AIGC 率、优先国内适配、免费试用先行。 一、TOP3 全流程首选&#xff08;亲测不踩雷&#xff09; 1. 千笔AI&…...

举一个具体例子说明为什么索引不是越多越好,举具体字段

文章目录1. 核心舞台&#xff1a;笔记表 (t_note) 结构设计&#x1f6a8; 错误的操作&#xff1a;2. 结合具体字段&#xff0c;拆解三大翻车现场现场一&#xff1a;给 view_count&#xff08;浏览量&#xff09;加索引 —— 导致写放大&#xff0c;拖垮数据库现场二&#xff1a…...

Unity动态自然系统:Forest Environment-Dynamic Nature深度解析

1. 这不是“贴图堆砌”&#xff0c;而是自然系统级建模&#xff1a;Forest Environment-Dynamic Nature 的真实定位你有没有试过在Unity里拖进几棵树、铺点草、加个天空盒&#xff0c;然后发现场景像一张静止的风景明信片——风不动、叶不摇、雨不落、雾不散&#xff1f;我做过…...

基于MAX78000的离线鸟类声音识别:边缘AI从数据到部署全流程解析

1. 项目概述&#xff1a;当边缘AI“听懂”鸟鸣在野外生态监测或自家后院观鸟时&#xff0c;你是否有过这样的经历&#xff1a;听到一阵清脆或婉转的鸟鸣&#xff0c;却完全不知道是哪位“歌唱家”在表演&#xff1f;传统的鸟类识别依赖专家经验和图鉴比对&#xff0c;不仅门槛高…...

武汉国电华美16875kVA串联谐振试验装置,这手活儿细

在超高压变电站和长距离电缆的现场&#xff0c;交流耐压试验是检验设备绝缘的“最后一关”。这位老师傅经手过不少大工程&#xff0c;他说&#xff0c;面对GIS、大型变压器这些“大块头”电容性试品&#xff0c;能不能顺利“过关”&#xff0c;往往就看串联谐振装置顶不顶得住。…...