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));

}

}

java洗牌_java语言实现简单的洗牌,发牌相关推荐

  1. JAVA中调用C语言函数简单教程

    背景知识 本地代码 在JAVA中使用其他语言的代码(如C/C++)称为本地代码. 历史原因 JAVA的早期阶段,很多人认为使用C和C++来加速JAVA应用中的关键部分是个好主意,但是实际上,虽然JAV ...

  2. java生日正则表达式_Java语言十五讲

    前言 每年技术媒体都会评选最受欢迎的编程语言,Java总是高居前位.自然,没有办法说一个语言绝对比另一种语言好,这个话题一如既往地会引起大家无谓的争论不休.对别的行业的人来讲也许会觉得莫名其妙,但是对 ...

  3. java未来发展潜力_Java语言未来是否还有发展前景

    首先,从当前Java语言的技术布局情况和行业应用情况来看,未来在较长一段时间内,Java语言都将是IT互联网行业内非常重要的编程语言之一,而且由于Java语言在大数据.云计算和物联网等领域也都有比较广 ...

  4. java 条件匹配_java语言实现满足多条件匹配简单过滤输出问题

    展开全部 package zhidao; import java.io.File; import java.io.FileWriter; import java.io.IOException; imp ...

  5. java关闭ftp 连接_Java语言实现简单FTP软件------gt;连接管理模块的实现:主机与服务器之间的连接与关闭操作(八) - 移动编程 - ITeye博客...

    (1)FTP连接 运行FTP客户端后,首先是连接FTP服务器,需要输入FTP服务器的IP地址及用户名.密码以及端口号后点击连接按钮开始连接FTP服务器,连接流程图如下图所示. 点击"连接&q ...

  6. 在java中 int类型对应的包装类是_Java语言对简单数据类型进行了类包装,int对应的包装类是______。...

    c__d 贺卡 ()特效是由两部分组成,一部分是调整,一部分是画面控制. What do people in Tokyo love eating? "一国两制"是一个完整的概念,其 ...

  7. java实现ftp协议_Java语言实现简单FTP软件 FTP协议分析(1)

    FTP(File Transfer Protocol)就是文件传输协议.通过FTP客户端从远程FTP服务器上拷贝文件到本地计算机称为下载,将本地计算机上的文件复制到远程FTP服务器上称为上传,上传和下 ...

  8. java小知识_java小知识点简单回顾

    1.java的数据类型分为两种:简单类型和引用类型(数组.类以及接口).注意,java没有指针的说法,只有引用.简单类型的变量被声明时,存储空间也同时被分配:而引用类型声明变量(对象)时,仅仅为其分配 ...

  9. java foreach用法_Java十大简单性能优化

    以下是Java中最容易进行的10个性能优化: 1.使用StringBuilder 这几乎是所有Java代码中的默认设置.尽量避免+操作员.当然,您可能会争辩说它StringBuilder无论如何都是语 ...

最新文章

  1. 2021全球开放数据应用创新大赛开启,300万+奖金等你来拿!
  2. 一步一步SharePoint 2007之十七:解决实现Form认证后无法再用SharePoint Designer编辑网站的问题...
  3. 特征级融合_更丰富的卷积特征用于目标边缘检测(文末附有论文及源码下载)...
  4. mes建设指南_给予和接受建设性批评的设计师指南
  5. lambda与内置函数
  6. 更新和插入的并发问题_mysql经典面试题:如何读写分离?主从原理是啥?同步的延时问题...
  7. python 逻辑回归准确率是1_python数据分析(三)——逻辑回归之学生成绩预测
  8. 九年级计算机上册教学总结,九年级信息技术教学工作总结
  9. linux多cpu运行python脚本,linux系统使用python获取cpu信息脚本分享
  10. Sprint3(12.18)总结
  11. DAG最小可重路径覆盖or最长反链的一种做法
  12. loadrunner使用system()函数调用Tesseract-OCR识别验证码遇到的问题
  13. [SUCTF 2019]EasyWeb---无参数RCE
  14. 网络延迟的优化方法-管理延迟
  15. Chrome浏览器输入不安全站点,没有继续前往链接--解决方案thisisunsafe
  16. 盘点 11 月份 火火火 的 GitHub 项目
  17. 如果一笔生意听起来好得让人难以置信
  18. 2021国家开放大学计算机网络安全技术形成性考核二
  19. 人脸识别系统的实现与封装
  20. 3 MySQL数据管理

热门文章

  1. HTML+CSS+JS实现 ❤️人物走悬崖小游戏❤️
  2. 《零基础》MySQL 排序(十八)
  3. kafka 重新分配节点_Kafka扩容节点和分区迁移
  4. mysql for update场景_一个mysql死锁场景实例分析
  5. 数据库MySQL入门第一天
  6. mysql_unbuffered_query的_用mysql_unbuffered_query函数取大数据
  7. 关于 Taro 的 ScrollView 在Dom结构发生变化会自动回滚到顶部解决方案和原因
  8. PyCharm 安装插件
  9. Java 将中缀表达式转换成后缀表达式
  10. 绘制彩虹html代码,HTML5 Canvas 彩虹螺旋图生成器