java洗牌_java语言实现简单的洗牌,发牌

packagecom.java.lei.homework;importjava.util.Arrays;importjava.util.Random;public classPokerGame {//1.创建数组,用以存储扑克牌

static String[] pokers = new String[54];public static voidmain(String[] args) {//2.创建牌 所有的牌赋值到array数组中

pokers =newPoker();//3.洗牌 这里的实参pokers是经过创建牌之后新生成的pokers

String[] pokers2 =upsetPoker(pokers);//4.发牌

sendPoker(pokers2);

}//创建牌的方法

public staticString[] newPoker() {//1.定义花色数组

String[] colors = {"红桃","黑桃","梅花","方片"};//2.定义牌面数组

String[] numbers = {"A","2","3","4","5","6","7","8","9","10","J","Q","K"};//3.定义王

String[] kings = {"大王","小王"};//4.使用循环将牌存储到pokers数组

int index = 0;for(int i = 0 ; i < numbers.length ; i ++) {for(int j = 0 ; j < colors.length ; j ++) {

pokers[index++] = colors[j] +numbers[i];

}

}//5.大小王拷贝入pokers数组

System.arraycopy(kings, 0, pokers, index, 2);//6.输出牌

System.out.println("现有一副扑克牌" + Arrays.toString(pokers) + "\n");returnpokers;

}//洗牌的方法

public staticString[] upsetPoker(String[] array) {//1.定义新的数组,用以存储洗好的牌

String[] newpokers = newString[pokers.length];//2.定义数组,用以标识被随机取出的牌

boolean[] mark = new boolean[pokers.length];//3.洗牌

for(int i = 0 ; i < pokers.length ; i ++) {//a.创建随机数

Random rd = newRandom();//b.获取随机数的下标

int index =rd.nextInt(pokers.length);//c.判断标识

if(mark[index] == false) {//d.将未洗过的牌存储入newpokers

newpokers[i] =pokers[index];//e.修改标识,被洗过的牌标记为true

}else{

i--; //该次取随机数取到的是洗过的牌,则重新再取一次

}

}//newpokers内的牌拷贝到数组pokers

pokers =Arrays.copyOf(newpokers, newpokers.length);

System.out.println("洗过的牌:" + Arrays.toString(newpokers)+"\n");returnnewpokers;

}//发牌的方法

public static voidsendPoker(String[] array) {//1.定义玩家及底牌数组

String[] one = new String[0];

String[] two= new String[0];

String[] three= new String[0];

String[] underpoker= new String[3];//2.循环进行发牌

for(int i = 0 ; i < pokers.length-3 ; i++) {if(i % 3 == 0) {

one= Arrays.copyOf(one, one.length+1);

one[one.length-1] =pokers[i];

}else if(i % 3 == 1) {

two= Arrays.copyOf(two, two.length+1);

two[two.length-1] =pokers[i];

}else if(i % 3 == 2) {

three= Arrays.copyOf(three, three.length+1);

three[three.length-1] =pokers[i];

}

}

System.arraycopy(pokers, pokers.length-3, underpoker, 0, 3);

System.out.println("玩家1:" +Arrays.toString(one));

System.out.println("玩家2:" +Arrays.toString(two));

System.out.println("玩家3:" +Arrays.toString(three));

System.out.println("底牌:" +Arrays.toString(underpoker));

}

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/571515.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

CSS3 3D transform变换

transform的坐标是需要了解的特性。 我们的rotateX,rotateY,rotateZ,和translateX,translateY等都是基于相同的坐标系来定位的。 3D的坐标如下入所示&#xff1a; 3D transform中有下面这三个方法&#xff1a; rotateX( angle )rotateY( angle )rotateZ( angle )理解了这三个方…

vba结束本次循环进行下次_VBA掌握循环结构,包你效率提高500倍

这是系列免费教程《Excel VBA&#xff1a;办公自动化》&#xff0c;还是老规矩&#xff0c;看看我们走到哪里了。1.认识VBA&#xff1a;什么是VBA&#xff1f;2.这些掌握了&#xff0c;你才敢说自己懂VBA3.VBA变量5年踩坑吐血精华总结4.VBA中重要的强制申明&#xff0c;谁看谁明…

CefSharp 支持MP4

效果图&#xff1a; 下载链接&#xff1a;https://share.weiyun.com/d1e249ef5c56b4d909b2124dc2dd8902 创建Wpf项目引用 如下&#xff1a; 第一步&#xff1a;创建项目引用CefSharp 第二步&#xff1a;将DLL拷贝到运行项目的Debug下 第三步&#xff1a;项目平台设置32位 第四…

python定义字典列表_Python基础语法(四)—列表、元组、字典、集合、字符串

列表基本概念列表是有序的元素集合&#xff0c;所有元素放在一对中括号中&#xff0c;用逗号隔开&#xff0c;没有长度限制&#xff1b;列表索引值以0为开始值&#xff0c;-1为从未尾的开始位置。列表可以使用操作符进行拼接&#xff0c;使用*表示重复。当列表元素增加或删除时…

ReentrantLock 分析

带着疑问去分析 ReentrantLock是如何实现锁管理的。ReentrantLock是如何实现重入的。ReentrantLock是如何实现公平锁与非公平锁。ReentantLock的公平锁为什么一般情况下性能都比公平锁查。ReentrantLock数据结构 ReentrantLock的底层是借助于AbstractQueuedSynchronizer实现的&…

v4l2 框架下如何设置分辨率_Linux下如何进行FTP设置

目录&#xff1a; 一、Redhat/CentOS安装vsftp软件二、Ubuntu/Debian安装vsftp软件一、Redhat/CentOS安装vsftp软件1.更新yum源yum update -y2.安装vsftpyum install vsftpd -y3.修改配置文件vi /etc/vsftpd/vsftpd.conf # 原有初始配置 local_umask022 dirmessage_enableYES x…

java ztree json_java递归实现ztree树结构数据展示

//获得zTree结构的数据(测试AuthInfo)RequestMapping("/getAuthInfoTree.action")public void getAuthInfoTree(HttpServletRequest request,HttpServletResponse response) throws ServletException, IOException {System.out.println("getAuthInfoTree")…

2017-2018-1 20155213 《信息安全系统设计基础》第十一周学习总结

2017-2018-1 20155213 《信息安全系统设计基础》第十一周学习总结 【学习内容:第九章——虚拟存储器】 一、课本内容梳理 1.虚拟存储器 作用&#xff1a; 将主存看作是一个存储在磁盘上的地址空间的高速缓存&#xff0c;在主存中只保护活动的区域&#xff0c;并根据需要在磁盘和…

vscode弹出cmd_先看看 VS Code Extension 知识点,再写个 VS Code 扩展玩玩

TL;DR文章篇幅有点长 &#xff0c;可以先收藏再看 。要是想直接看看怎么写一个扩展&#xff0c;直接去第二部分 &#xff0c;或者直接去github看源码 。第一部分 --- Extension 知识点一、扩展的启动如何保证性能 --- 扩展激活&#xff08;Extension Activation&#xff09; 我…

Part5 数据的共享与保护 5.4类的友元5.5共享数据的保护

友元是C提供的一种破坏数据封装和数据隐藏的机制。通过将一个模块声明为另一个模块的友元&#xff0c;一个模块能够引用到另一个模块中本是被隐藏的信息。可以使用友元函数和友元类。为了确保数据的完整性&#xff0c;及数据封装与隐藏的原则&#xff0c;建议尽量不使用或少使用…

webp转换gif_用 WebP 创建尺寸更小、细节更丰富的图片,以此来提高网站的速度...

WebP 文件格式是一种基于 RIFF(资源互换文件格式)的文档格式。WebP 是 2010 年 Google 开发的一种图片格式&#xff0c;它为网页上的图片提供了卓越的无损和有损压缩。网站开发者们可以使用 WebP 来创建尺寸更小、细节更丰富的图片&#xff0c;以此来提高网站的速度。更快的加载…

myeclipse java注释模板_Eclipse/MyEclipse Java注释模板设置详解 ---转载自百度空间

设置注释模板的入口&#xff1a; Window->Preference->Java->Code Style->Code Template 然后展开Comments节点就是所有需设置注释的元素啦。现就每一个元素逐一介绍&#xff1a;文件(Files)注释标签&#xff1a;/*** Title: ${file_name}* Package ${package_name…

php之快速入门学习-9(switch)

PHP Switch 语句 switch 语句用于根据多个不同条件执行不同动作。 PHP Switch 语句 如果您希望有选择地执行若干代码块之一&#xff0c;请使用 switch 语句。 <?php switch (n) { case label1:如果 nlabel1&#xff0c;此处代码将执行;break; case label2:如果 nlabel2&…

python 如何判断excel单元格为空_如何用python处理excel(二)

读取excelimport xlrdworkbookxlrd.open_workbook(rC:\Users\Desktop\hebing\学生登记表.xls)sheetworkbook.sheet_by_index(0)#根据序列号来打开某一个sheetrowsheet.nrows#将excel的行数赋值给变量colsheet.ncols#将excel的列数赋值给变量print(sheet.cell_value(1,0))#打印出…

mysql 事务 数量_MySQL 数据查询语言(DQL) 事务控制语言(TCL)详解

一、 数据查询语言(DQL)(重中之重)完整语法格式&#xff1a;select 表达式1|字段,....[from 表名 where 条件][group by 列名][having 条件][order by 列名 [asc|desc]][limit 位置,数量]<1> 普通查询select 查询表达式; // 最简单的sql语句&#xff0c;是一个函数select…

web前端到底是什么?有前途吗

web前端到底是什么&#xff1f; 某货&#xff1a; “前几年前端开发人员鱼目混杂&#xff0c;技术参差不齐&#xff0c;相对学习起来不规范&#xff0c;导致> 前端开发人员聚集&#xff0c;所以现在前端工种和工资还是没得到普遍重视&#xff0c;但近2年来&#xff0c;> …

此加载项为此计算机的所有用户安装_MDI Jade 6.5软件安装教程

软件下载▼关注微信公众号&#xff1a;贵州永航科技回复Jade即可获得软件安装包下载地址以及详细安装教程更多软件安装教程可点击菜单栏获取软件介绍MDI Jade是一款专门用于XRD分析的软件&#xff0c;XRD分析就是X射线衍射分析&#xff0c;MDI Jade通过对材料进行X射线衍射&…

java 线程定时器_Java线程之Timer定时器

定时/计划功能主要使用的就是Timer对象&#xff0c;它在内部还是使用多线程的方式进行处理&#xff0c;所以它和线程技术还是有非常大的关联。Timer类主要作用就是设置计划任务&#xff0c;但封装任务的类却是TimerTask类。TimerTask类是一个抽象类。执行任务的时间晚于当前时间…

博客已经迁移到 http://imbotao.top 也会同步到这儿

完全是看到别人搭建的 hexo github Pages 博客界面很好看&#xff0c;很简洁&#xff0c;自己也喜欢折腾&#xff0c;就鼓捣了一个。 也在阿里云买了自己的域名&#xff0c;个人感觉在博客的样式和功能上花费了太多的时间&#xff0c;不过现在终于搞的差不多了&#xff0c;以后…

vscode 写vue 没有js提示_如何用VSCode实现一个vue.js项目?

1,新建项目打开Visual studio code打开一个你想要创建项目的文件夹打开集成终端&#xff1a;查看 –> 集成终端 或者直接按 ctrl\ 如果没有安装vue-cli&#xff0c;在终端输入&#xff1a;npm install \-g vue-cli全局安装vue-cli然后新建项目vue init webpack projectNamep…